Come si usa Notepad ++ regex pipe | per stringhe più lunghe di un carattere?
Domanda
Sto cercando di ottenere notepad ++ per regex trovare tutte le istanze di " abc " e "def" nella seguente frase:
L'ABC è andato alla def.
Nessuna delle seguenti sintassi sembra funzionare:
- abc | def
- [abc | def]
- (abc) | (DEF)
- (abc | DEF)
NOTA: " [a | d] " corrisponde a qualsiasi istanza di " a " o " d " quando ho provato
Soluzione
Aggiorna a Notepad ++ v6. Dal log delle modifiche: " PCRE (espressioni regolari compatibili Perl) è supportato. & Quot; Ho verificato che | funziona nella ricerca regex quando si utilizza Notepad ++ v6.
Altri suggerimenti
Non è niente di speciale in " più lungo di un carattere " ;, Notepad ++ non supporta il | personaggio in regex. Neanche "a | d" lavori. Vedi la pagina di aiuto di regex . La versione 6.1.1 di Notepad ++ ora supporta |
.
Suggerirei di utilizzare un editor con una corretta implementazione regex come gvim o UltraEdit .
All'interno di una dichiarazione del set di caratteri ( […]
) solo i caratteri \
, ]
e -
sono caratteri speciali con le funzioni speciali di fuga dal carattere successivo, chiusura della dichiarazione del set di caratteri e marcatura di un intervallo di caratteri (solo se non scritto all'inizio o alla fine), rispettivamente. Qualsiasi altro personaggio è interpretato come un personaggio semplice.
Anche il tuo |
in [a | d]
significa che [a | d]
descrive uno dei caratteri a
, |
o d
e non solo a
o d
come a | d
.
Stavo avendo lo stesso problema, ed è così che sono arrivato qui. Dal momento che è un difetto di notepad ++, possiamo accontentarci usando Powershell. Nel tuo caso, esegui semplicemente Select-String:
`ss abc,def filename`
Se su Unix hai ovviamente altri strumenti come grep.
Riconosco che volevi una soluzione per Notepad ++, e anch'io, ma a volte devi accontentarti.
Il | dovrebbe funzionare ora.
Grazie al miglioramento Regex in Notepad ++
abc | def
(abc) | (DEF)