找到一个正则表达式,其中a永远不会紧跟b(形式语言理论)

时间:2017-08-28 23:46:10

标签: regex theory formal-languages

我需要找到所有字符串语言的简化正则表达式 a,' s和c&s,其中a从不紧跟b。

我试了一下,直到(a + c)* c(b + c)* +(b + c)*(a + c)*

这样可以,如果是这样可以简化吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

您正在寻找负面的背后隐藏:

b

这将找到不紧跟a

之后的所有a(?!b) 个实例

或否定前瞻:

a

这会找到b

之后没有紧跟其后的所有{{1}}个实例

以下是lookbehind的regex101示例:
https://regex101.com/r/RsqXbW/1

以下是前瞻的regex101示例:
https://regex101.com/r/qiDIZU/1

答案 1 :(得分:0)

您的解决方案仅包含所需语言的字符串。但是,它并不包含所有这些内容。例如,不包含 acbac 。你的基本想法很好,但你需要能够迭代可能的因素。在:

(b+c)*(a (a)*(c(b+c)*)*)*

第一部分生成所有字符串而不是a。

在第一个a之后,没有任何东西,另一个或者c。另一个让我们有三个相同的选择。 c基本上再次开始游戏。这是第一个正式化之后的部分。需要很多*才能在所有不同选项中生成空字符串。