我已经编写了一个匹配typedef的模式,后跟任意数量的字符,直到匹配第一个开头括号后跟*,然后是一个单词,关闭括号等等。 模式是
pattern_funp = re.compile(r"typedef(.*?)\(\*(\w+)\s*\)\s*\(.*?\)\s*")
上面的模式匹配下面正确的行中的acpi_adr_space_setup:
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));
模式应该匹配第一个(后跟*而不是第二个(带*。
)答案 0 :(得分:2)
不确定是什么意思,但是如果你想在第一个括号后不匹配任何内容,那么将[^(]
代替.
应该可以解决问题:
pattern_funp = re.compile(r"typedef([^(]*?)\(\*(\w+)\s*\)\s*\(.*?\)\s*")