0

我正在使用以下表达式:

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

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

   I1 : ITT_example_design
      PORT

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

4

2 回答 2

1

首先,[\r\n\s]您的正则表达式中的 是无用的,因为\s它是[\r\n]. 所以可以简化为^\s*(\w+)\s*:\s*(\w+)\s+(port|generic)

Notepad++ 和 SourceCookifier/CTags 使用不同的正则表达式引擎。N++ 使用 PCRE,而 CTags 使用 POSIX 样式(我不确定后者是否 100%,有人可以确认吗?)。

所以字符类\w\s不适用于 SourceCookifier 的情况。分别将它们更改为适当[:word:][:space:]

所以你的正则表达式应该是这样的:

[[:space:]]*([[:alnum:]]+)[[:space:]]*:[[:space:]]*([[:alnum:]_]+)[[:space:]]+(PORT|GENERIC)
于 2013-11-07T22:59:28.397 回答
1

CTags 正则表达式模式只适用于单行代码,不能同时适用于多行。因此,您需要在解析器本身中实现您的需求。

于 2014-12-11T12:38:45.897 回答