【发布时间】:2016-03-18 09:09:32
【问题描述】:
除了 aa.. 或 bb.. 之类的任意数量的 a 和 b 的字符串之外,正则表达式 (a*+b*) 是否会包含类似
的字符串ab
或任何以 b 结尾的字符串?
(a*+b*) 和 (a* b*) 一样吗?
我对正则表达式 (a*+b*) 生成的字符串有点困惑,如果有人能提供帮助,我将不胜感激。
【问题讨论】:
-
抱歉,我不认为 a*+ 是有效的正则表达式,也不是计算理论中的语言表达式(抱歉,我只在大学上过一个关于这个主题的学位课程)。如果你想要一个表示一个或多个'a',后跟一个或多个'b',它应该是a+b+。如果只允许 'a' 不带 'b' 并且只允许 'b' 不带 'a',甚至是一个空字符串,它将是 ab。所以...
-
*+是一个占有欲贪心量词。玩得开心:regular-expressions.info/possessive.html -
感谢您的阅读,对我来说非常新。我完全基于 FA 的概念使用正则表达式。
-
@hek2mgl:您的解释可能是正确的,但我怀疑 OP 使用的是正式语言教科书,
+被用作常见的析取运算符(“或”)在数学中。 -
如果它的
a*或b*等效表达式是a*|b*。如果这是唯一的表达式,它将匹配所有a或所有b的子字符串,但不能同时匹配两者。如果它的a*b*与另一个具有相同的影响,则可能会混合使用a和b。这个表达式a*+b*作为一个正则表达式使用了一个稍微复杂的运算符,其中+是一个量词的修饰符。在这种情况下,它告诉引擎的回溯部分在匹配后不返回任何a。这是一个高级主题,可能不是您想要的。
标签: regex compiler-construction computation-theory