我希望正则表达式仅在包含重复子模式时才匹配模式。它可以归结为如下简单的事情。鉴于此文本:
a a
a b
b b
Run Code Online (Sandbox Code Playgroud)
我想要一个只匹配“a a”和“b b”(而不是“a b”)的正则表达式模式,因为在这些行上出现了两次相同的子模式。
我正在 BBEdit 中工作,尽管该解决方案可能适用于任何扩展的正则表达式。我已经在堆栈溢出和其他地方阅读了很多关于条件子模式的内容,并在进行过程中进行了试验,但我似乎无法使其工作。当我发现它是多么简单时,我可能会感到懊恼。奖励积分(像往常一样)用于解释为什么正则表达式的工作方式。
(.) \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)