NotePad++ 替换两个连续单词之间的文本

NotePad++ 替换两个连续单词之间的文本

场景:我试图在包含类似块的文件中提出一个正则表达式,它基本上是 PGN 文件。

每个区块都以 [事件 ” 开始

..和 ents 在

(1/2-1/2|1-0|0-1)

管道符号 | 表示括号之间只有一个值,即 1/2-1/2、1-0 或 0-1

问题:我想提出一个正则表达式,该正则表达式将搜索 1/2-1/2,然后向上查找“[Event ”并选择所有块。

因此,考虑以下三个部分

[Event "Chess"]
[Date "2016"]
[White "Caruana,F"]
[Black "Onischuk,Al"]
[Result "1-0"]

1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4 Nf6 5.O-O Bc5 6.c3 b5 7.Bc2 d5 8.a4 dxe4
9.axb5 Bg4 10.bxc6 exf3 11.gxf3 Be6 12.Ra5 Qd6 13.f4 e4 14.d4 exd3 15.Qxd3 O-O
16.Qxd6 Bxd6 17.Rd1 Bg4 18.Rd4 Bf3 19.Ba4 Rfe8 20.Be3 Ne4 21.Bd1 Bxd1 22.Rxd1 Rab8
23.Nd2 Rxb2 24.Nxe4 Rxe4 25.Re5 Rxe3 26.fxe3 Rb8 27.Ra5 Kf8 28.c4  1-0

[Event "Chess"]
[Date "2016"]
[White "Shabalov,A"]
[Black "Onischuk,Al"]
[Result "1/2-1/2"]

1.d4 Nf6 2.c4 e6 3.Nc3 d5 4.Nf3 Be7 5.e3 O-O 6.Bd3 dxc4 7.Bxc4 c5 8.O-O b6
9.Qe2 Bb7 10.dxc5 Bxc5 11.e4 Nbd7 12.Bf4 Nh5 13.Bg5 Be7 14.Be3 Nhf6 15.Rfd1 Qb8
16.Nd4 Rd8 17.f3 Ne5 18.Bb3 Nc6 19.Nxc6 Rxd1+ 20.Rxd1 Bxc6 21.Nb5 Qe5 22.Na3 Qc7
23.Rc1 Rc8 24.Qa6 Qd7 25.Rd1 Qc7 26.Rc1 Qd7 27.Rd1 Qc7 28.Rc1 Qd7 29.Rd1 Qc7
30.Rc1  1/2-1/2

[Event "Chess"]
[Date "2016"]
[White "Onischuk,Al"]
[Black "Akobian,V"]
[Result "1/2-1/2"]

1.d4 d5 2.c4 e6 3.Nc3 Nf6 4.Bg5 Be7 5.Nf3 O-O 6.Qc2 h6 7.Bh4 b6 8.cxd5 Nxd5
9.Nxd5 exd5 10.Bxe7 Qxe7 11.Rc1 c5 12.dxc5 Bg4 13.e3 Bxf3 14.gxf3 Rc8 15.Qd2 Rxc5
16.Rxc5 Qxc5 17.Bg2 Nd7 18.O-O Rc8 19.Rd1 Nf6 20.f4 Qc2 21.Bxd5 Nxd5 22.Qxd5 Qxb2
23.Qd7 Rc1 24.Rxc1 Qxc1+ 25.Kg2 Qc4 26.Qxa7 Qe4+ 27.Kg3 Qg6+ 28.Kf3 Qh5+
29.Kg2 Qg4+ 30.Kf1 Qd1+ 31.Kg2  1/2-1/2

因此,如果我输入该表达式,(虽然搜索从底部开始,但它应该只找到并选择第三个块,如下所示

[Event "Chess"]
[Date "2016"]
[White "Onischuk,Al"]
[Black "Akobian,V"]
[Result "1/2-1/2"]

1.d4 d5 2.c4 e6 3.Nc3 Nf6 4.Bg5 Be7 5.Nf3 O-O 6.Qc2 h6 7.Bh4 b6 8.cxd5 Nxd5
9.Nxd5 exd5 10.Bxe7 Qxe7 11.Rc1 c5 12.dxc5 Bg4 13.e3 Bxf3 14.gxf3 Rc8 15.Qd2 Rxc5
16.Rxc5 Qxc5 17.Bg2 Nd7 18.O-O Rc8 19.Rd1 Nf6 20.f4 Qc2 21.Bxd5 Nxd5 22.Qxd5 Qxb2
23.Qd7 Rc1 24.Rxc1 Qxc1+ 25.Kg2 Qc4 26.Qxa7 Qe4+ 27.Kg3 Qg6+ 28.Kf3 Qh5+
29.Kg2 Qg4+ 30.Kf1 Qd1+ 31.Kg2  1/2-1/2

...然后当我单击“查找下一个”时,它应该找到 7 选择第二个块。

因此,要搜索的两个词是 1. [事件 " 2. 1/2-1/2

请问有人可以帮忙吗?

答案1

根据重新制定进行编辑

  • Ctrl+F
  • 找什么:\[Event (?:(?!\[Event)[\s\S])+1/2-1/2(?!"\])
  • 检查环绕
  • 检查正则表达式
  • 请勿检查. matches newline
  • Search in document

解释:

\[Event     : literally [Event 
(?:         : start non capture group
  (?!       : start negative look ahead, zero-length assertion that make sure we don't have [Event after
    \[Event : literally [Event
  )         : end look ahead
  [\s\S]    : any character, space or not space
)+          : group appears 1 or more times
1/2-1/2     : literally 1/2-1/2
(?!"\])     : negative look ahead, zero-length assertion that make sure we don't have "] after

这与给定示例中的块 2 和块 3 匹配。

相关内容