繁体   English   中英

包含a和偶数b的字符串的正则表达式

[英]Regular expression for strings that cointains a and an even number of b's

如何定义正则表达式以使用以下语言?

L = {w∈{a,b} * | w的b为偶数}

我试图创建相关的自动机:

在此处输入图片说明

然后我尝试应用该算法从DFA获取常规表达式,并得到以下公式: a*ba*b

这是正确的答案吗?

您很接近,但是在模式的末尾需要一个a* ,还需要使用锚点^$来指定字符串的开始和结束,然后可以将所有正则表达式放入捕获组中并使用*来匹配任何偶数如果b ,和a*零数的b

 ^((a*ba*ba*)*|a*)$

| 是逻辑或,并使您的正则表达式引擎匹配(a*ba*ba*)*a*

正则表达式可视化

Debuggex演示

您也可以使其更优雅,但由于您对regex并不十分熟悉,所以我建议使用上述模式。

例如,以下将起作用:

^(((a*b){2})*)a*$

这是最好的解决方案,因为我遵循从DFA转换为正则表达式的算法(由笔完成):

(a*|ba*b)*

您可以在此处进行测试,并观看此视频,以了解有关此算法的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM