正则表达式匹配重复的子模式

lar*_*ryy 2 regex bbedit

我希望正则表达式仅在包含重复子模式时才匹配模式。它可以归结为如下简单的事情。鉴于此文本:

a a
a b
b b
Run Code Online (Sandbox Code Playgroud)

我想要一个只匹配“a a”和“b b”(而不是“a b”)的正则表达式模式,因为在这些行上出现了两次相同的子模式。

我正在 BBEdit 中工作,尽管该解决方案可能适用于任何扩展的正则表达式。我已经在堆栈溢出和其他地方阅读了很多关于条件子模式的内容,并在进行过程中进行了试验,但我似乎无法使其工作。当我发现它是多么简单时,我可能会感到懊恼。奖励积分(像往常一样)用于解释为什么正则表达式的工作方式。

hwn*_*wnd 5

那么从您的示例数据来看,您想像这样使用反向引用..

(.) \1
Run Code Online (Sandbox Code Playgroud)

说明

  • 反向引用允许您回溯到捕获组先前匹配的内容。

  • 反向引用在正则表达式中指定为反斜杠 ( \) 后跟一个数字,该数字指示要调用的捕获组的编号。

    (         # group and capture to \1:
      .       #   any character except \n
    )         # end of \1
              # ' '
    \1        # what was matched by capture \1
    
    Run Code Online (Sandbox Code Playgroud)

现场演示