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 个部分(abcadc

现在可以进行惰性(非贪婪)搜索。

【讨论】:

***.com/questions/18415871/…【参考方案3】:

注意:自 2011 年 3 月 31 日起,此已接受的答案已过时。Notepad++ v5.9 及更高版本现在支持非贪婪正则表达式。

请查看更新的答案here 或here。


Notepad++ 不支持惰性 ? 修饰符。相反,您可以指定您想要的内容:

a[^c]+c

其中指定:匹配a,后跟一个或多个不是c 的字符,然后是c。这将匹配 abcadc

【讨论】:

呃。天才。以前没想过。 UPDATE 5.9 版(5.9 版(构建时间 2011 年 3 月 31 日)及更高版本支持非贪婪正则表达式。H/T 至 @UGEEN 回答。 ***.com/questions/18415871/…【参考方案4】:

在清理可有可无部分的日志文件时,我在使用带有“全部替换”和空“替换为”模式的非贪婪正则表达式时遇到了麻烦。 我的解决方案是让模式匹配整行而不改变行的其余部分。

示例:删除行首直到第一个分号:而不是 ^.+?: -> 现在使用 ^.+?:(.*)$ -> \1 并按“全部替换”

【讨论】:

以上是关于Notepad++ 非贪婪正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式

正则表达式贪婪与非贪婪模式

python正则表达式贪婪与非贪婪模式

python正则表达式贪婪算法与非贪婪算法与正则表达式子模式的简单应用

python的正则表达式(re函数,贪婪和非贪婪)

正则表达式贪婪和非贪婪模式