在 Sublime Text 中匹配多行正则表达式

Vir*_*ake 2 regex sublimetext3

我试图在 Sublime Text 中编写正则表达式,在其中找到三个匹配项

A1
A2
A3
B1
B2
B3
C1
C2
C3
Run Code Online (Sandbox Code Playgroud)

1 场比赛

A1
A2
A3
Run Code Online (Sandbox Code Playgroud)

2 匹配

B1
B2
B3
Run Code Online (Sandbox Code Playgroud)

3 匹配

C1
C2
C3
Run Code Online (Sandbox Code Playgroud)

当然,它可以用例如处理

((?:A\d\n)+|(?:B\d\n)+|(?:C\d\n)+)
Run Code Online (Sandbox Code Playgroud)

有没有更聪明的方法来做到这一点,而不仅仅是枚举?

互动演示

Wik*_*żew 5

您可以使用

^([A-Z])\d+(?:\R\1\d+)*
Run Code Online (Sandbox Code Playgroud)

请参阅PCRE 正则表达式演示(SublimeText3 使用 PCRE 正则表达式引擎)。

细节

  • ^ - 一行的开始
  • ([A-Z])- 第 1 组:任何 ASCII 大写字母(请注意,如果关闭区分大小写选项,这也将匹配小写字母)
  • \d+ - 1+ 位数字
  • (?:\R\1\d+)* - 零次或多次重复:
    • \R - 换行
    • \1 - 与第 1 组相同的字母
    • \d+ - 1+ 位数字