[英]matching pattern with regular expression in python
我寫了一個匹配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));
模式應與第一個匹配(后面跟*而不是第二個(帶有*)。
不知道您的意思是什么,但是如果您不想在第一個括號之后匹配任何內容,則可以使用[^(]
代替.
來解決問題:
pattern_funp = re.compile(r"typedef([^(]*?)\(\*(\w+)\s*\)\s*\(.*?\)\s*")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.