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根本无法同时看到多行代码,这对我来说太奇怪了(