正则表达式问题

时间:2009-10-27 09:15:32

标签: regex

我正在学习正则表达式并且很难过。任何人都可以告诉我,如果我在正确的道路上遇到这两个问题吗?

- 列出正则表达式指定的语言中的单词(a | b)(c | elipson) - 我在想答案是ac,bc,a,b。我是对的吗?

- 给出一个正则表达式,用于识别具有奇数个a的所有单词。 - 我在考虑(a)(aa)*。如果我没有错,当单词只是'a'时,这应该总是与异常一起使用。当单词只是'a'时,如何修改它才能使它工作?

2 个答案:

答案 0 :(得分:4)

  • 假设“epsilon”表示空字符串,那么你是对的。

  • 您对(a)(aa)*也是正确的。查看正则表达式语法中的*含义(并将其与+的含义进行比较)。

答案 1 :(得分:1)

你的第二个答案只给出了1,3,5,...... a 依次的单词。如果你想要的所有单词都包含 - 在任何地方 - 一个奇数的a,你会想要这样的东西:

/a([^\s]*a[^\s]*a)*/

如果你是严格的并且不想得到夸张或其他非字母字符的话,那应该这样做:

/a([\w]*a[\w]*a)*/

(根据RegEx引擎,您需要将[\w]替换为[a-z]