2015-04-25 25 views
6

voglio abbinare [a-z] soltanto tranne le lettere a,e,i,o,uCome abbinare tutti gli alfabeti tranne pochi?

Uso negato set [^aeiou]* ho potuto abbinare tutto tranne a,e,i,o,u, ma come limitare il mio everything a [a-z]?

Questo può essere fatto facilmente utilizzando la sottrazione della classe di caratteri ([a-z-[aeiou]]) in XML Schema, XPath, .NET (2.0+) e JGsoft regex flavor, ma come posso farlo in PCRE?

risposta

9

È possibile utilizzare l'asserzione lookahead negativo. È come una specie di sottrazione.

(?![aeiou])[a-z] 
    ^ ^
    |  | 
subtract from 

DEMO

+0

Perfetto! .. E 'possibile catturare le partite in gruppi? ho provato '(?! [aeiou]) ([az]) +?' [DEMO] (https://regex101.com/r/aA6eK0/3) .. le corrispondenze sono lettere individuali .. –

+0

Avresti bisogno di avvolgere i parenti su tutto il RE: '((?! [aeiou]) [az])' per uno, o '((:: (?! [aeiou]) [az]) +)' per molti (uno o di più), penso. Potresti farla franca con un + dopo la prima RE che suggerisco. –

+1

https://regex101.com/r/aA6eK0/4 –