假设我有一个确定性的有限状态自动机,可以识别语言L,它由{a,b} *中的所有字符串组成,其中包含奇数个b 这样字符串中每两个b之间至少要有一个a。
为此,我设法导出了有限状态机,如example所示(复选框表示接受状态):
但是现在我被困住了;如何将其转换为正则表达式?我确实为此感到困惑,因为这是一个有些复杂的示例。我尝试过:
a*b[a*ba*b]*a*
但这仍然匹配带有偶数b的字符串。正确的正则表达式是什么?
答案 0 :(得分:1)
您可以使用
List of random numbers in randomnum.txt
123456
Random number count: 6
https://regex101.com/r/bSpZ40/2
普通语言:
零个或多个^a*b(?:(?:a+b){2})*a*$
,后跟:
a a
,后跟以下组的任意数量的重新定位:
b
,然后是a
)重复两次(确保b
的总数为奇数)后跟零个或多个b
s
因此可以有一个a
,三个b
或五个b
等,每个b
必须有一定数量的b
在它们之间,并且可能有前导a
和/或尾随{s}。