我编写了一个模式来匹配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));
模式应与第一个匹配(后跟*而不是第二个匹配*)。你知道吗
不知道你的意思是什么,但是如果你不想在第一个括号后面匹配任何东西,那么把
[^(]
而不是.
放进去就可以了:相关问题 更多 >
编程相关推荐