2015-04-25 19 views
6

Sadece reddedildiği ben a,e,i,o,u dışında her şeyi maç olabilir, ama nasıl benim everything[a-z] için kısıtlamak için [^aeiou]* set kullanarak harfler a,e,i,o,uBirkaç alfabenin dışındaki tüm alfabeler nasıl eşleştirilir?

hariç [a-z] eşleştirmek istediğiniz?

Bu, XML şeması, XPath, .NET (2.0+) ve JGsoft regex tatlarında karakter sınıfı çıkarma ([a-z-[aeiou]]) kullanılarak kolayca yapılabilir, ancak PCRE'de nasıl yapabilirim?

cevap

9

Negatif bakış sorusunu kullanabilirsiniz. Bir çeşit çıkarma gibi.

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

DEMO

+0

mükemmel! .. o gruplar halinde eşleşmelerini yakalamak mümkün mü? denedim (?! [aeiou]) ([az]) +? '[DEMO] (https://regex101.com/r/aAeE0/3) .. kibritler münferit harfler .. –

+0

Bütünler etrafındaki parantezleri sarın: '((?! [aeiou]) [az])' biri için, veya '((?: (?! [aeiou]) [az]) +)' birçok için (bir veya daha fazla), bence. Önerdiğim ilk RE'den sonra sadece bir + ile kurtulabilirsin. –

+1

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