SourceCookifier插件和多行正则表达式?

时间:2013-11-07 19:14:25

标签: notepad++

我正在使用以下表达式:

^\s*(\w+)\s*:\s*(\w+)[\r\n\s]+(port|generic)

查找所有代码实例,例如:

   I1 : ITT_example_design
      PORT

这是一个多行结果。但是这不起作用,但是它可以在Notepad ++的搜索功能中工作。有什么想法有什么不对吗?

2 个答案:

答案 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