Notepad++ SourceCookinger插件和多行正则表达式?

Notepad++ SourceCookinger插件和多行正则表达式?,notepad++,Notepad++,我使用以下表达式: ^\s*(\w+)\s*:\s*(\w+)[\r\n\s]+(port|generic) 要查找代码的所有实例,例如: I1 : ITT_example_design PORT 这是一个多行结果。但是,这不起作用,但在Notepad++的搜索功能中起作用。你知道怎么了吗 首先,正则表达式中的[\r\n\s]是无用的,因为\s是[\r\n]的超集。因此,它可以简化为^\s*(\w+)\s*:\s*(\w+)\s+(端口|通用) Notepad++&Sour

我使用以下表达式:

^\s*(\w+)\s*:\s*(\w+)[\r\n\s]+(port|generic)
要查找代码的所有实例,例如:

   I1 : ITT_example_design
      PORT

这是一个多行结果。但是,这不起作用,但在Notepad++的搜索功能中起作用。你知道怎么了吗

首先,正则表达式中的
[\r\n\s]
是无用的,因为
\s
[\r\n]
的超集。因此,它可以简化为
^\s*(\w+)\s*:\s*(\w+)\s+(端口|通用)

Notepad++&SourceCookinger/CTAG使用不同的正则表达式引擎。N++使用PCRE,而CTags使用POSIX样式(我不能100%确定后者,有人能证实吗?)

因此字符类
\w
\s
将不适用于SourceCookier案例。将它们分别更改为相应的
[:word://code>,
[:space://code>

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

[[:space:]]*([[:alnum:]]+)[[:space:]]*:[[:space:]]*([[:alnum:]_]+)[[:space:]]+(PORT|GENERIC)

CTags正则表达式模式只能在单行代码上工作,而不能同时在多行代码上工作。因此,您需要实现您的需求

好的,所以我接受了你的建议,把我的正则表达式切换到了^[[:space:][]*([[:alnum:][]+[:space:][]*:[:space:][]*([[[:alnum:][]+][:space:][]端口,但它什么也没找到?我遗漏了什么?1)尝试在
[[:cntrl:][]*
之后添加星号,而不是加上2)我认为您遗漏了下划线
[:alnum:][/code>(检查我的答案)3)如果上述方法都无效,请尝试“分解”正则表达式,我的意思是首先尝试检查
([:alnum:][]+)
是否匹配任何内容,如果是,则累加,直到达到所需的结果。更正:^[:space:][]*([[:alnum:][]+)[[:space:][]*\:[:space:][:space:][]*([[:alnum:][u]+)[:space:][]*[‌​[:cntrl:]+[:space:]*端口不工作ID您是否将
+
更改为
*
?尝试删除
^
。是的,我尝试了这两种方法。如果我像你建议的那样分解这个表达式,在我用+/*的任意组合在最后一个[[:cntrl:][[:space:]]之后添加任何字母之前,一切都正常。看起来CTAG根本无法同时看到多行代码,这对我来说太奇怪了(