Notepad++ 非贪婪正则表达式
Posted
技术标签:
【中文标题】Notepad++ 非贪婪正则表达式【英文标题】:Notepad++ non-greedy regular expressions 【发布时间】:2011-04-27 15:06:13 【问题描述】:Notepad++ 是否支持非贪婪正则表达式?
例如文本:
abcxadc
我想使用模式获取零件:
a.+c
现在我得到的是整个字符串而不是 2 个部分。我尝试使用“?”运算符但没有成功。
【问题讨论】:
【参考方案1】:更新: 从 5.9 版(构建时间 2011 年 3 月 31 日)开始,Notepad++ 支持非贪婪正则表达式(新的 scintilla 2.5)。
【讨论】:
【参考方案2】:我用 Notepad++ V6.1.5 做了以下事情(它现在有 PCRE 正则表达式引擎):
a.+?c
得到了 2 个部分(abc
和 adc
)
现在可以进行惰性(非贪婪)搜索。
【讨论】:
***.com/questions/18415871/…【参考方案3】:注意:自 2011 年 3 月 31 日起,此已接受的答案已过时。Notepad++ v5.9 及更高版本现在支持非贪婪正则表达式。
请查看更新的答案here 或here。
Notepad++ 不支持惰性 ?
修饰符。相反,您可以指定您不想要的内容:
a[^c]+c
其中指定:匹配a
,后跟一个或多个不是c
的字符,然后是c
。这将匹配 abc
和 adc
。
【讨论】:
呃。天才。以前没想过。 UPDATE 5.9 版(5.9 版(构建时间 2011 年 3 月 31 日)及更高版本支持非贪婪正则表达式。H/T 至 @UGEEN 回答。 ***.com/questions/18415871/…【参考方案4】:在清理可有可无部分的日志文件时,我在使用带有“全部替换”和空“替换为”模式的非贪婪正则表达式时遇到了麻烦。 我的解决方案是让模式匹配整行而不改变行的其余部分。
示例:删除行首直到第一个分号:而不是 ^.+?:
-> 现在使用
^.+?:(.*)$
-> \1
并按“全部替换”
【讨论】:
以上是关于Notepad++ 非贪婪正则表达式的主要内容,如果未能解决你的问题,请参考以下文章