python中正则表达式与模式的匹配

2024-06-08 22:12:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个模式来匹配typedef,后跟任意数量的字符,直到它匹配第一个左大括号,后跟一个*,然后是一个单词,右大括号等等。 模式是

pattern_funp = re.compile(r"typedef(.*?)\(\*(\w+)\s*\)\s*\(.*?\)\s*")

上面的模式与下面一行中的acpi\u adr\u space\u设置相匹配,这是正确的:

typedef acpi_status(*acpi_adr_space_setup) (acpi_handle region_handle,u32 function,void *handler_context,  void **region_context);

但在下面的一行中,它与func匹配,这不是我想要的:

typedef void *call_rcu_func_t (struct rcu_head *head,void (*func1)(struct rcu_head *head));

模式应与第一个匹配(后跟*而不是第二个匹配*)。你知道吗


Tags: 数量context模式space大括号headstructregion
1条回答
网友
1楼 · 发布于 2024-06-08 22:12:17

不知道你的意思是什么,但是如果你不想在第一个括号后面匹配任何东西,那么把[^(]而不是.放进去就可以了:

pattern_funp = re.compile(r"typedef([^(]*?)\(\*(\w+)\s*\)\s*\(.*?\)\s*")

相关问题 更多 >