Como eu uso curingas no Notepad ++ para 'localizar e substituir' todo este texto?

2

Eu realmente aprecio alguma ajuda com isso. Eu estou trabalhando com um grande corpus de texto que foi marcado com script XML e eu preciso arrumar algumas coisas. Mais especificamente, há várias centenas de números entre colchetes (isto é, como '[1234]') que preciso excluir (colchetes incluídos). Cada número é diferente e pode haver entre 3 e 5 dígitos nesses números.

A segunda coisa que preciso fazer é colocar tags XML em torno de algumas outras partes do texto. Estes são nomes em colchetes. Por exemplo:

Ele (o Sr. Smith) disse ...

Qual eu quero mudar para:

Ele <annot> (Mr. Smith) </annot> disse ... '.

Como posso realizar essas duas alterações?

Eu já tentei usar o modo estendido e pesquisar por '[. *]', mas ele não retorna nenhum resultado. Quando eu tento o mesmo com RegEx eu recebo muitos hits, mas parece estar procurando por cada colchete no corpus.

    
por Bungalows 18.07.2014 / 15:46

1 resposta

1

Os colchetes são um token especial em expressões regulares ( [a-z] significa qualquer caractere no intervalo a to z ), então você teria que escapar deles.

Sua expressão de pesquisa se tornaria \[\d+\] (com \d+ significando um ou mais dígitos). No entanto, você quer substituir isso apenas pelos dígitos. Você precisa configurar um grupo de captura usando parênteses e referenciá-lo na expressão de substituição. Suas configurações se tornam:

  • Pesquisar por: \[(\d+)\]
  • Substituir por:

Quanto ao seu segundo problema, não tenho certeza se entendi corretamente com o contexto que você fornece ... se apenas os nomes estiverem entre parênteses, você poderá substituir apenas \([^\)]+\) por <annot> \(Mr\. [^\)]+\) </annot> ou talvez Mr. se os nomes forem precedidos por \( .

Para entrar em detalhes, o modo como funciona é assim:

  • os parênteses que você procura precisam ser escapados (como normalmente são usados para definir grupos de captura, portanto você usa \) e [^...]+
  • ... significa um ou mais caracteres que não são \(whatever name\)
  • sua expressão de pesquisa é, portanto, um parêntese de abertura, seguido por qualquer caractere que não seja um parêntese de fechamento (portanto, deve corresponder aos nomes), seguido por um parêntese de fechamento.
  • %code% representa toda a expressão pesquisada na área de substituição

Se você tem uma lista desses nomes para substituir, é melhor usar %code% como expressão de pesquisa e, se não, é impossível, pois você não pode fazer um sufixo "regexp" o que é um nome e o que não é.

    
por 18.07.2014 / 16:15