围绕模式非贪婪地匹配模式

时间:2019-06-18 16:52:47

标签: regex notepad++

给出输入字符串:

a
a
bcx
ada
ac

表达式a.+?cac不一定是单字母标记)导致2个匹配项:

a
a
bc

ada
ac

当我真正想要的时候:

a
bc

a
ac

基本上,我想要尽可能小的匹配部分。如何在Notepad ++中实现此目标?

2 个答案:

答案 0 :(得分:2)

您可以在DOTALL(或s)模式下以负先行使用此正则表达式:

a(?:(?!a.+c).)+?c

RegEx Demo

RegEx详细信息:

  • a:匹配字母a
  • (?:(?!a.+c).):如果不跟表达式a.+c
  • 则匹配字母
  • +?:匹配上一个或多个前一组(非贪婪)
  • c:匹配字母c

PS:如果您不真正处理单个字母,则可以轻松调整此模式。

答案 1 :(得分:0)

您可以使用排除字符集来确保第一个a之后没有另一个a,除了c之前的字符之外:

a[^a]*?.c

演示:https://regex101.com/r/u9YRqC/1

相关问题