Usando pesquisa / substituição de curinga no Notepad ++

17

Aqui está o meu problema: Em um arquivo .txt, preciso localizar e substituir milhares de instâncias de sintaxe como esta:

(consulte (a053007djfgspwdf))

ou

(consulte (a053007djfgspwdf) e (a54134xsedgeg))

ou

(consulte (a053007djfgspwdf), (a9554xsdfgsdfg) e (a54134xsedgeg))

Há muita variedade entre as seqüências de texto iniciais (ver (a e final )) . Isso pode ser configurado no Notepad ++ usando regex? Se sim, como eu faria isso? Obrigado!

Michael Tuck
fonte

Respostas:

17

Desculpe pessoal, acho as outras respostas complicadas. (Sem desrespeito aos cartazes originais.)

Como isso sempre aparece como o primeiro resultado da pesquisa, adicionarei isso em:

  1. Abra a caixa de diálogo pesquisar / substituir ( CTRL+ Fa guia substituir)
  2. Marque "Expressão regular" na parte inferior
  3. Use. * Como curinga

Por exemplo, eu queria remover todas as instâncias de abp = "1314", abp = "1313", abp = "1312" etc. (basicamente os números são todos diferentes, é por isso que você deseja que um curinga se livre deles).

Na caixa de diálogo substituir:

Encontre o que: abp=".*"
Substitua por:

(Você está substituindo qualquer coisa nessas citações por nada para se livrar dela)

Fonte: https://www.organicweb.com.au/17226/general-technology/notepad-wildcard/

SweetSuzie
fonte
15

Sim pode! O Notepad ++ possui um modo de pesquisa RegEx que você pode selecionar para todas as suas necessidades de substituição do RegEx.

O exemplo abaixo é uma substituição básica para qualquer coisa entre, (see (a...))com exceção de uma quebra de linha. Pode ser necessário modificar o RegEx ou escrever o seu para atender às suas necessidades. Aqui é um ótimo lugar para ajudá-lo a experimentar.

RegEx: \(see \(a.+\)\)

Cordas correspondentes:

(see (a053007djfgspwdf))
(see (a053007djfgspwdf) and (a54134xsedgeg))
(see (a053007djfgspwdf), (a9554xsdfgsdfg) and (a54134xsedgeg))


Substitua (consulte (a ...)) pela substituição

um tempo
fonte
Obrigado! Ele encontrou as instâncias do primeiro exemplo (consulte (a053007djfgspwdf)), mas não as outras. Ainda assim, um ótimo começo. Vou brincar com ele para ver o que mais posso fazer. Se você tiver mais sugestões, eu agradeceria muito. Obrigado novamente.
Michael Tuck
Você clicou em Substituir tudo ou continuou clicando em Substituir para alternar entre correspondências semelhantes ao uso Localizar próximo ? O texto que você está procurando apenas começa (see (ae termina ))? Se você tiver seqüências de caracteres que terminem com parênteses únicos, poderá transformar o último \)no grupo de captura (\)|)para corresponder as que terminam em ))"ou" ).
time.time
Tentei algumas substituições e, em seguida, Substituir tudo. Depois disso, a sequência de pesquisa não encontrou nada. O texto para todos é: (consulte um texto variado )) Nenhuma string com parênteses únicos, exceto talvez erros de digitação.
Michael Tuck
Atualizei minha resposta com um RegEx alternativo (\(see \(a|\(a)([^\)]+)\)(\)|)que corresponderá às strings da sua pergunta.
time.time
LOL você atualizou sua resposta enquanto eu estava editando minha resposta. Vou experimentar o novo.
quer
1

Experimente este padrão: \(see \(a(.*)\)verifique se a opção ". Corresponde à nova linha" está desmarcada e a opção "envolver" está marcada.

ethmz
fonte
1

Como algumas delas foram muito profundas para eu entender, deixe-me mostrar o que fiz depois de ler todas essas soluções e muito mais para finalmente entender melhor. (esta é uma abordagem simples, pode não ser a melhor)

Eu queria remover todos os meus elementos de figura em toda a página da web. Figura 2.1, Figura 1.1, ect.

Isso foi:

<p class="td1-content b8"><span class="stepNumber">2.  </span>Select Memo from the toolbar<br><b>Figure 2.1</b></p>

Eu queria que acabasse:

 <p class="td1-content b8"><span class="stepNumber">2.  </span>Select Memo from the toolbar</p>

Mas cada

tinha um número de figura diferente, então usei isso no texto sublime 2.

  1. ctrl H
  2. clique no símbolo ". *" no canto inferior direito do texto sublime 2 (regex)
  3. digitado <br><b>Figure.*</b>
  4. substituir por: -esquerda em branco

Isso substituiu todas as minhas instâncias por figuras. note que eu usei. * onde os números estariam. Espero que isto ajude.

Jim Schwetz
fonte
0

O regex exato que você precisa é:

\(see \(\w+\)((, \(\w+\))*( and \(\w+\)))?\)

Por exemplo:

insira a descrição da imagem aqui

Ao selecionar Localizar tudo no documento atual , o resultado seria:

insira a descrição da imagem aqui

Você pode simplesmente usar Substituir conforme sua necessidade.

Se você deseja incluir o atambém na regex, pode usar:

\(see \(a\w+\)((, \(a\w+\))*( and \(a\w+\)))?\)
Roney Michael
fonte