语法 - RegEx - 包含五个元音(aeiou)

时间:2011-10-02 18:39:23

标签: regex

我正在努力学习正则表达式。我有

L = {a, b, x, y, z, i, o, u, e, c}

我想构建一个正则表达式,用于描述按字母顺序(aeiou)包含五个元音的字符串。所有字符串都至少有五个元音中的一个。

我是否必须按顺序将它们排列在一起?像

a(b*x*y*z*i*o*u*ec*)iou

或者我可以将它们混合起来:

aeiou(b*x*y*z*c*)

因为,他们在集合中没有顺序,这是否意味着第一个解决方案是我正在寻找的?

1 个答案:

答案 0 :(得分:0)

在大多数正则表达式语言中,您需要以下内容:

[^aeiou]*a[^aeiou]*e[^aeiou]*i[^aeiou]*o[^aeiou]*u[^aeiou]*

这基本上是统一的。然后,您必须处理“单词开头”和“单词结束”问题,这取决于上下文和正则表达式语言。每行一个字,您只需使用“^”开始和“$”。


使用您的首选符号并知道所使用的完整字母包含10个字母,并假设您可以进行分组,那么您可以写:

(b*c*x*y*z*)*a(b*c*x*y*z*)*e(b*c*x*y*z*)*i(b*c*x*y*z*)*i(b*c*x*y*z*)*u(b*c*x*y*z*)*

(b*c*x*y*z*)*部分表示零次或多次重复“0或更多b,然后是零或更多c,......,然后是零或更多z”。这可以满足您的需求;但它也证明了为什么字符类符号是一个好主意。