在正则表达式中顺序不重要吗?

问题描述 投票:0回答:1

我正在研究此stackoverflow链接(Regular expression for odd number of a's)中提出的问题,要求该链接为a上奇数Σ = {a,b}的字符串找到正则表达式。

最有效的最高答案给出的答案是b*(ab*ab*)*ab*

我很困惑-a刚好位于最后一个b*之前,此顺序实际上有关系吗?为什么不能改为b*a(ab*ab*)*b*(将a放在第一个b*之后)或它的任何其他排列?

[令我感到困惑的另一件事是为什么它是(ab*ab*)*而不是(b*ab*ab*)*b*ab*ab*是不是“精确地具有2 a”的更准确定义?

regex computer-science regular-language automata
1个回答
1
投票
为什么不能改为b*a(ab*ab*)*b*

这将要求字符串在第一个非前导a之前具有两个连续的b,不是吗?例如,abaa何时不匹配。另一方面,将整个ab*部分移到起点(b*ab*(ab*ab*)*)也可以。

为什么是(ab*ab*)*而不是(b*ab*ab*)*

(b*ab*ab*)*

正在工作,但是第一个b*是非常多余的,因为剩下的b将与组中的最后一个b*匹配。该组之前还有一个b*,这导致b*无法匹配任何内容,因此是多余的。

© www.soinside.com 2019 - 2024. All rights reserved.