我需要为自学期间在一些讲义中发现的问题编写一个正则表达式。此正则表达式匹配 abxba 形式的字符串,其中 x 是不包含 ba 作为子字符串的 a、b 和 c 的字符串。到目前为止我所拥有的是^ab(a+c+b+|a+b+c+|b+c+a+|c+a+b+)ba$
,但它显然是不完整的。有人可以帮忙吗?
问问题
127 次
3 回答
2
你可以试试这个
^ab(?!.*ba.*ba$)(?=.*a.*ba$)(?=.*b.*ba$)(?=.*c.*ba$)[abc]+ba$
----------- ------------
| |->match further only if there's atleast 1 a
|->match further only if there's no ba
于 2013-03-08T04:37:45.370 回答
0
你必须写一个正则表达式吗?您可以只使用^ab([a-c]*)ba$
抓住字符串的中间并在中间运行一些检查,例如确保它至少包含一个 a、b 和 c,并确保它不包含 ba。
编辑:更好的是,您可以完全跳过正则表达式,只需执行上述所有检查,添加检查以确保它以 ab 开头并以 ba 结尾。
于 2013-03-08T04:28:27.070 回答
0
我使用负前瞻尝试了这个正则表达式:
^ab(a|b(?!a)|c)+ba$
它匹配这个字符串abbcabcabbbbcccaaaaaaba
但不匹配这个:abbcabcabbabbcccaaaaaaba
于 2013-03-08T04:31:14.997 回答