【发布时间】:2017-11-23 13:40:50
【问题描述】:
给定正则表达式
^(aa|bb){1}(a*)(ab){1}$
对于语言,
所有以双字母开头并以子字符串ab结尾的字符串
我想知道是否可以打印字符串无效的正则表达式代码。这与有限自动机中的正则表达式有关。
例如,我有以下这些无效字符串的输入集,
abaa
aabb
aaba
我想要这样的输出,
abaa ^(aa|bb){1}
aabb ^(aa|bb){1}(a*)
aaba ^(aa|bb){1}(a*)(ab){1}$
【问题讨论】:
-
aabb ^(aa|bb){1}(a*)对于这个,字符串变得无效的模式并不是真的在这一点上,是吗?那和你的表达本身是无效的。它有不平衡的括号。 -
先生@Jerry 我已经编辑了不平衡的括号,我可以澄清一下它在哪里无效?
-
@ctwheels 很抱歉,但我可以知道这个正则表达式的意义何在?
-
啊,感谢您的澄清。这与我认为你想要的不同。我建议将您的正则表达式分成多个部分,并使用字符串函数来拆分字符串并测试每个部分。因此,对于
abaa,您将拆分并获得ab并使用正则表达式^(aa|bb)(注意{1}不是必需的,实际上是多余的)。此外,并不是说使用^(a{2}|b{2})性能更好。这可以指示字符串的哪一部分格式错误。