2009-05-04 11 views
19

Sto cercando di Notepad ++ per regex trovare tutte le istanze di "ABC" e "def" nella seguente frase:Come si usa Notepad ++ pipe regex | per le stringhe più lunghe di un carattere?

L'abc andato al DEF.

Nessuno dei 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

+1

[a | d] non significa quello che pensi lo fa, significa "corrisponde con nessun di a, d, o | ". [annuncio] farebbe la stessa cosa, ma è diverso da un | d. –

+0

Quello che voglio dire è, il | il personaggio dentro [a | d] in realtà non sta facendo nulla, sta solo dicendo che è anche ok per far corrispondere "|". Non è quello che stavi cercando di fare. Perché Notepad ++ non supporta l'utilizzo di | carattere per significare "uno di", quello che stai cercando di fare sarà impossibile. –

+0

Come sarò in grado di cercare query SQL digitate in "qualsiasi query sql" anche se la query è multilinea. Ho provato ["] [^ \ n] ["] per riga singola e ["] * ["] per multilinea, ma in caso di multilinea ignora la seconda citazione nella stessa riga e termina alla riga successiva in posizione di virgola mobile. Ho bisogno di aiuto qui e lo trovo usando Notepad ++. – Rick2047

risposta

11

Aggiornamento a Notepad ++ v6. Dal registro delle modifiche: "PCRE (Perl Compatible Regular Expressions) è supportato." L'ho verificato | funziona nella ricerca regex quando si utilizza Notepad ++ v6.

24

Non è niente di speciale per "più di un carattere", Notepad ++ non supporta | personaggio in regex. Neanche "a | d" funziona. Vedi the regex help page. La versione 6.1.1 di Notepad ++ ora supporta |.

Suggerirei di utilizzare un editor con un'implementazione corretta di espressioni regolari come gvim o UltraEdit.

+0

L'ultima versione di oggi (Blocco note 10.1.1) supporta | in RegEx –

+1

@DragosToader ... e tuttavia, non ti preoccupare di rispondere alla domanda dell'OP ?? –

+0

@ b1naryatr0phy La risposta per Blocco note 10.1.1 è cercare (abc) | (def) –

1

All'interno di una dichiarazione di set di caratteri ([…]) solo i caratteri \, ] e - sono caratteri speciali con le funzioni speciali di sfuggire il carattere successivo, chiudendo la dichiarazione di set di caratteri e la marcatura di un intervallo di caratteri (solo se non scritto alla inizio o fine), rispettivamente. Qualsiasi altro personaggio è interpretato come un personaggio semplice.

Così è il vostro | in [a|d] che significa che [a|d] descrive uno qualsiasi dei personaggi a, | o d e non solo a o d come a|d fa.

1

Stavo avendo lo stesso problema, che è il modo in cui sono atterrato qui. Dal momento che si tratta di un deficit di Notepad ++, possiamo farcela usando Powershell. Nel tuo caso, esegui semplicemente una stringa Select:

`ss abc,def filename` 

Se su Unix hai altri strumenti come grep, ovviamente.

Riconosco che volevi una soluzione per Notepad ++, e anche io, ma a volte devi accontentarti.

1

Il | dovrebbe funzionare ora
grazie al miglioramento Regex in Notepad ++

abc | def

(abc) | (DEF)

Problemi correlati