我正在使用以下表达式:
^\s*(\w+)\s*:\s*(\w+)[\r\n\s]+(port|generic)
查找所有代码实例,例如:
I1 : ITT_example_design
PORT
这是一个多行结果。但是这不起作用,但是它可以在Notepad ++的搜索功能中工作。有什么想法有什么不对吗?
答案 0 :(得分:1)
首先,正则表达式中的[\r\n\s]
无效,因为\s
是[\r\n]
的超集。因此可以简化为^\s*(\w+)\s*:\s*(\w+)\s+(port|generic)
。
Notepad ++& SourceCookifier / CTags使用不同的正则表达式引擎。 CT ++使用PCRE而CTAG使用POSIX风格(我对后者不是100%肯定,有人可以确认吗?)。
因此字符类\w
,\s
将不适用于SourceCookifier案例。将它们分别更改为适当的[:word:]
,[:space:]
。
所以你的正则表达式应该是这样的:
[[:space:]]*([[:alnum:]]+)[[:space:]]*:[[:space:]]*([[:alnum:]_]+)[[:space:]]+(PORT|GENERIC)
答案 1 :(得分:1)
CTags正则表达式模式仅适用于单行代码,而不能同时处理多行代码。因此,您需要实现您的需求in the parser itself。