2013-03-31 5 views
-3

Например, желаемое Regex будет успешно соответствовать «areriroru», но не будет соответствовать «sadwdij», который содержит только две из гласных.Regex, чтобы определить, содержит ли строка все гласные?

+5

Просьба представить выражения, которые вы пробовали, и объяснить, с чем вы столкнулись. Это не McRegex, где вы просто заказываете выражение. –

+0

Я полный новичок с Regex до такой степени, что даже не знаю, с чего начать: P –

+0

С этим я могу помочь вам: http://www.regular-expressions.info/tutorial.html. Посмотрите на * lookaheads *. Всякий раз, когда в строке должно быть что-то где-то, образы - это путь. –

ответ

1

Одна из возможностей заключается в перечислении всех перестановок гласных. Здесь представлены первые 24 из 120 (все те, где 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#, вы можете использовать LOOKAHEAD утверждение для каждого гласного перед сопоставлением строки с .*:

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

Если вы не заботитесь о случае ваших гласные, вы могли бы использовать это:

(?=.*[Aa])(?=.*[Ee])(?=.*[Ii])(?=.*[Oo])(?=.*[Uu]).* 
Смежные вопросы