Como uso curingas no Notepad++ para ‘localizar e substituir’ todo esse texto?

Como uso curingas no Notepad++ para ‘localizar e substituir’ todo esse texto?

Eu realmente apreciaria alguma ajuda com isso. Estou trabalhando com um grande corpus de texto que foi marcado com script XML e preciso arrumar algumas coisas. Mais especificamente, existem centenas de números entre colchetes (ou seja, como '[1234]') que preciso excluir (colchetes incluídos). Cada número é diferente e pode haver de 3 a 5 dígitos nesses números.

A segunda coisa que preciso fazer é colocar tags XML em torno de outras partes do texto. Esses são nomes entre colchetes. Ou seja, tipo:

Ele (Sr. Smith) disse...

Para o qual quero mudar:

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

Como posso realizar essas duas alterações?

Já tentei usar o Modo Estendido e pesquisar por '[.*]', mas não retornou resultados. Quando tento fazer o mesmo com RegEx, recebo muitos resultados, mas parece estar procurando todos os colchetes do corpus.

Responder1

Os colchetes são um token especial em expressões regulares ( [a-z]significa qualquer caractere no intervalo ato z), então você terá que escapá-los.

Sua expressão de pesquisa se tornaria \[\d+\]( \d+significando um ou mais dígitos). No entanto, você deseja 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:

  • Procurar:\[(\d+)\]
  • Substituir com:\1

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

Para entrar em detalhes, a forma como funciona é assim:

  • os parênteses que você procura devem ser escapados (já que normalmente são usados ​​para definir grupos de captura, então você usa \(e\)
  • [^...]+significa um ou mais caracteres que não são...
  • sua expressão de pesquisa é, portanto, um parêntese de abertura, seguido por quaisquer caracteres que não sejam um parêntese de fechamento (portanto, deve corresponder aos nomes), seguido por um parêntese de fechamento.
  • \0representa toda a expressão pesquisada na área de substituição

Se você tiver uma lista desses nomes para substituir, é melhor usar \(whatever name\)como expressão de pesquisa e, se não tiver, será impossível, pois você não pode fazer uma regexp "adivinhar" o que é um nome e o que não é .

informação relacionada