繁体   English   中英

RE:a的数量可以被6整除,b的数量可以被8整除

[英]RE: Number of a's is divisible by 6 and Number of b's is divisible by 8

找到一个表示由{ a, b }组成的字符串的正则表达式,其中a的数字可以被6整除, b的数量可以被8整除。

我试图创建一个接受这种字符串的DFA。 我的想法是使用所有余数mod 6和mod 8导致总共48个余数。 因此,DFA中的每个状态都是一对(r, s) ,其中r从0到6变化, s从0到7变化。开始状态(以及接受状态)是(0, 0) ,我们可以很容易地给出转换通过注意到如果我们输入"a" ,状态(r, s)转换为(r + 1, s)并且输入"b"它转换到状态(r, s + 1)

然而,使用48个状态的DFA太难了,我不确定是否可以通过手动使用DFA最小化算法来最小化这种情况。

我真的不确定我们怎么能得到一个表示这种字符串的正则表达式。

如果允许使用前瞻:

^(?=b*((ab*){6})+$)a*((ba*){8})+$

正则表达式可视化

Debuggex演示

匹配字符串的示例: bbaabbaabbaabb

想法很简单:我们知道如何搭配串具有数a由6 S整除- ^((b*ab*){6})+$ ,我们也知道如何搭配具有数字串b小号被8整除- ^((a*ba*){8})+$ 所以我们只是将一个正则表达式用于预测,另一个用于匹配部分。

如果您需要匹配仅a s或仅包含b s的字符串,则以下正则表达式将执行以下操作:

^(?=b*((ab*){6})*$)a*((ba*){8})*$

正则表达式可视化

匹配字符串的示例: aaaaaabbbbbbbbbbaabbaabbaabb

Debuggex演示

暂无
暂无

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

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