2013-03-31 39 views
-3

例如,所需的正則表達式將成功匹配「areriroru」,但不匹配包含兩個元音的「sadwdij」。正則表達式來確定字符串是否包含所有的元音?

+5

請發表您到目前爲止嘗試過的表達方式,並解釋您遇到的問題。這不是McRegex,您只需訂購一個表達。 –

+0

我是一個完整的初學者,使用正則表達式,我甚至不知道從哪裏開始:P –

+0

有了這個,我可以幫你:http://www.regular-expressions.info/tutorial.html。看看* lookaheads *。每當一個字符串應該包含某個地方的東西時,lookeheads就是要走的路。 –

回答

1

一種可能性是枚舉元音的所有排列。這裏有120個總數中的第24個(全部是a是第一個元音)。請注意,這形成了一個很長的表達式,但爲了清晰起見,我將它分成幾行。

a.*e.*i.*o.*u 
|a.*e.*i.*u.*o 
|a.*e.*o.*i.*u 
|a.*e.*o.*u.*i 
|a.*e.*u.*i.*o 
|a.*e.*u.*o.*i 

|a.*i.*e.*o.*u 
|a.*i.*e.*u.*o 
|a.*i.*o.*e.*u 
|a.*i.*o.*u.*e 
|a.*i.*u.*e.*o 
|a.*i.*u.*o.*e 

|a.*o.*e.*i.*u 
|a.*o.*e.*u.*i 
|a.*o.*i.*e.*u 
|a.*o.*i.*u.*e 
|a.*o.*u.*e.*i 
|a.*o.*u.*i.*e 

|a.*u.*e.*i.*o 
|a.*u.*e.*o.*i 
|a.*u.*i.*e.*o 
|a.*u.*i.*o.*e 
|a.*u.*o.*e.*i 
|a.*u.*o.*i.*e 
2

在C#中,你可以使用向前斷言每個元音的字符串.*匹配之前:

(?=.*a)(?=.*e)(?=.*i)(?=.*o)(?=.*u).* 

如果你不關心你的元音的情況下,你可以這樣做:

(?=.*[Aa])(?=.*[Ee])(?=.*[Ii])(?=.*[Oo])(?=.*[Uu]).* 
相關問題