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

时间:2016-03-31 11:33:05

标签: python regex

我已经编写了一个匹配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));

模式应该匹配第一个(后跟*而不是第二个(带*。

1 个答案:

答案 0 :(得分:2)

不确定是什么意思,但是如果你想在第一个括号后不匹配任何内容,那么将[^(]代替.应该可以解决问题:

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