我需要找到a,b和c的所有字符串 的语言的简化正则表达式,其中a永远不会紧跟在后面湾找到一个正则表达式,其中a永远不会紧接着b(形式语言的理论)
我想什么,伸出直到(A + C)* C(B + C)* +(B + C)*(A + C)*
这是罚款,如果是的话可以这样简单?
在此先感谢。
我需要找到a,b和c的所有字符串 的语言的简化正则表达式,其中a永远不会紧跟在后面湾找到一个正则表达式,其中a永远不会紧接着b(形式语言的理论)
我想什么,伸出直到(A + C)* C(B + C)* +(B + C)*(A + C)*
这是罚款,如果是的话可以这样简单?
在此先感谢。
你正在寻找一个负回顾后:
(?<!a)b
这会找到你所有的b
实例未紧跟a
或负前瞻:
a(?!b)
这会发现你所有的a
实例,其后不会立即跟着b
下面是回顾后一个regex101例如:
https://regex101.com/r/RsqXbW/1
这里是先行一个regex101例如:
https://regex101.com/r/qiDIZU/1
您的解决方案包含所需的语言只有字符串。但是,它并不包含所有这些。例如acbac不包含在内。你的基本想法很好,但你需要能够迭代可能的因素。在:
(b+c)*(a (a)*(c(b+c)*)*)*
第一部分生成没有a的所有字符串。
第一个a之后,没有任何东西,另一个a或c。另一个离开我们有三个选项。 c基本上再次开始游戏。这是第一次正式化后的部分。许多*需要在所有不同的选项中生成空字符串。
您是否问过关于编程中使用的正则表达式或理论上的正则表达式?后者属于math.stackexchange.com。 – Barmar
理论。好的谢谢。我已经将它发布在math.stackexchange.com –
我投票结束这个问题作为题外话题,因为它是关于数学正则表达式的,并已在math.SE上转贴。 – Barmar