我正在学习正则表达式并且很难过。任何人都可以告诉我,如果我在正确的道路上遇到这两个问题吗?
- 列出正则表达式指定的语言中的单词(a | b)(c | elipson) - 我在想答案是ac,bc,a,b。我是对的吗?
- 给出一个正则表达式,用于识别具有奇数个a的所有单词。 - 我在考虑(a)(aa)*。如果我没有错,当单词只是'a'时,这应该总是与异常一起使用。当单词只是'a'时,如何修改它才能使它工作?
答案 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]