NotePad ++ Substituindo Texto entre 2 Palavras Consecutivas

1

cenário: Eu estou tentando chegar a uma expressão regular em um arquivo que contém pedaços semelhantes, é basicamente arquivos PGN.

Cada pedaço começa com [Evento "

.. e ents em

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

o tubo | symbol significa que há apenas um valor entre parênteses, 1 / 2-1 / 2 ou 1-0 ou 0-1

Problema: Eu quero chegar a expressão regular que irá procurar por 1 / 2-1 / 2 e, em seguida, ir para cima e encontrar "[Evento" e selecione todo esse Chunk.

Então, considerando estes 3 pedaços

[Evento "Xadrez"] [Data "2016"] [Branco "Caruana, F"] [Black "Onischuk, Al"] [Resultado "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.xb5 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

[Evento "Xadrez"] [Data "2016"] [White "Shabalov, A"] [Black "Onischuk, Al"] [Resultado "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

[Evento "Xadrez"] [Data "2016"] [White "Onischuk, Al"] [Black "Akobian, V"] [Resultado "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

Portanto, se eu inserir essa expressão, (enquanto a pesquisa começa na parte inferior, ela só deve localizar e selecionar o terceiro bloco como este

[Evento "Xadrez"] [Data "2016"] [White "Onischuk, Al"] [Black "Akobian, V"] [Resultado "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

... então, quando eu clico em localizar próximo, ele deve encontrar 7 selecione o segundo pedaço.

Então as 2 palavras para pesquisar entre são 1. [Evento " 2. 1 / 2-1 / 2

Por favor alguém pode ajudar ??

    
por Sollosa 17.09.2018 / 18:57

1 resposta

1

Edite de acordo com a reforma

  • Ctrl + F
  • Encontre o que: \[Event (?:(?!\[Event)[\s\S])+1/2-1/2(?!"\])
  • check Embrulhe
  • verificar expressão regular
  • NÃO VERIFIQUE . matches newline
  • Pesquisa no documento

Explicação:

\[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

Isto corresponde ao bloco 2 e ao bloco 3 no exemplo dado.

    
por 18.09.2018 / 14:07