-4

例如,所需的正则表达式将成功匹配“areriroru”,但不会匹配仅包含两个元音的“sadwdij”。

4

2 回答 2

2

在 C# 中,您可以在将字符串与 匹配之前对每个元音使用前瞻断言.*

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

如果你不关心元音的大小写,你可以使用这个:

(?=.*[Aa])(?=.*[Ee])(?=.*[Ii])(?=.*[Oo])(?=.*[Uu]).*
于 2013-03-31T23:55:24.247 回答
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
于 2013-03-31T23:48:21.743 回答