Esporta tutte le corrispondenze di espressioni regolari in Textpad o Notepad ++ come elenco


28

In Textpad o Notepad ++ esiste un'opzione per esportare tutte le corrispondenze per trovare un'espressione regolare, come un unico elenco?

In un grande file di testo, sto cercando i tag (parole racchiuse in%%), usando l'espressione regolare %\< and \>%e desidero tutte le corrispondenze come un unico elenco, in modo da poter rimuovere i duplicati utilizzando Excel e ottenere un elenco di tag univoci.


Se si utilizza il plug-in RegexExtract per Notepad ++, è possibile rimuovere i duplicati e non è necessario post-elaborazione con Excel.
R. Schreurs,

Risposte:


53

È possibile ottenere ciò utilizzando le funzionalità Backreferences e Trova e contrassegna in Notepad ++.

  1. Trova le corrispondenze usando regex (diciamo %(.*?)%) e sostituiscilo con \n%\1%\n, dopo questo avremo la nostra parola target in righe separate (cioè nessuna riga avrà più di una parola corrispondente)

  2. Usa la funzionalità Cerca -> Trova -> Segna per contrassegnare ogni riga con regex %(.*?)%e ricorda di selezionare " Linea segnalibro " prima di contrassegnare il testo

  3. Seleziona Cerca -> Segnalibro -> Rimuovi linee non contrassegnate
  4. Salva il testo rimanente. È l'elenco richiesto.

Ho un altro file con <> come tag anziché%%, ho provato con <(. *?)> E \ n <\ 1> \ n, ma non funziona, per favore aiutatemi.
Kiranshell,

prego :) Per me funziona anche per <>. Ci sono nidificati <>? Potresti elaborare cosa non funziona esattamente?
Ankit,

Sto cercando di creare un elenco di tag come prima ma questi hanno una volta <>, sto usando <(. *?)> Invece di% (. *?)% E \ n <\ 1> \ n invece di \ n % \ 1% \ n, questo è il collegamento a un file di esempio wikisend.com/download/158050/tags.txt
Kiranshell,

Ho provato di nuovo con il testo fornito e usando <(. *?)>, Funziona normalmente. Ho ottenuto l'elenco dei tag <Supplies> <hostname> ..... e così via
Ankit

Si prega di indicare l'esatto errore / problema riscontrato. Potrebbe sembrare sciocco ma ricordo di spostare il cursore verso l'alto. Spesso faccio quell'errore e la ricerca non restituisce alcun risultato ... :)
Ankit

5

Fare questo in Notepad ++ è un requisito obbligatorio? Sei su Windows o in qualche forma di Unix? Se sei su Windows, puoi farlo (in parte) dal Prompt dei comandi:

findstr / r "% [az]. * [az] %% [az]%" your_file > new_file

findstrè vagamente ispirato grep, quindi questo new_file conterrà tutte le righe corrispondenti ai tuoi criteri di ricerca; è quindi possibile utilizzare Notepad ++ per eliminare il testo indesiderato (a sinistra del primo% ea destra del secondo).


E, naturalmente, se sei su Unix, puoi svolgere il compito equivalente con sed.


di gran lunga la risposta migliore!
Charles-Antoine Fournel,

2

Esiste un plug-in Notepad ++ che può copiare l'espressione regex corrispondente in un nuovo file in una nuova scheda. RegexExtract

Poiché non ho trovato alcun plug-in per Notepad ++ in grado di estrarre del testo dal documento corrente o tutti i file da una posizione con alcune impostazioni aggiuntive (come la conversione dei casi), ho deciso di provare a farlo da solo. (...) L'interfaccia del plugin è piuttosto semplice (...). (...) I campi "Trova", "Sostituisci" e "Maschera" usano la sintassi della regex C ++ 11. L'estrazione dai file funziona ora solo per quelli in UTF8.

Modifica input della finestra di dialogo adattati alla domanda

inserisci qui la descrizione dell'immagine

Nell'immagine puoi vedere come compilare la finestra di dialogo. Presumo che una parola non contenga spazi, ecc., Solo caratteri corrispondenti a \ w. In particolare:

  • Utilizzare una coppia di parentesi, per consentire la selezione della parola, senza i caratteri percetange.
  • Scegli l'opzione Estrai con Sostituisci , per selezionare la prima corrispondenza. Altrimenti, otterrai un output colonnare di tutti $ 1, $ 2, ecc.
  • Seleziona Skip $ & ... per escludere le partite complete.
  • Seleziona Filtro univoco per segnalare ogni corrispondenza una sola volta.
  • Fai clic su Estrai per selezionare Ottieni risultati. (La ricerca trova solo le corrispondenze, ma non riporta).

Bel plug-in, fa esattamente quello che è stato chiesto.
R. Schreurs,

Sembra non funzionare con Notepad a 64 bit ++
Ivan Chau

0

In TextPad, apriresti la Findscatola come al solito, quindi usi il Mark Allpulsante.

Da lì, usa la Copy Bookmarked Linesfunzione. (Menu Modifica> Copia altro> Linee contrassegnate.)


Personalmente, faccio quell'esatta operazione così spesso che ho configurato una scorciatoia da tastiera per la funzione Copia linee segnalibro: Ctrl + Alt + c.
Daveloyall,

Sono arrivato a questa domanda perché stavo cercando la domanda Notepad ++. Dopo molti anni come fedele e spietato utente di Textpad, sto passando a Notepad ++ (GPL).
Daveloyall,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.