我需要为自学期间在一些讲义中找到的问题写一个正则表达式。这个正则表达式匹配abxba形式的字符串,其中x是a,b的字符串,而c不包含ba作为子字符串。到目前为止我所拥有的是^ab(a+c+b+|a+b+c+|b+c+a+|c+a+b+)ba$
,但它显然是不完整的。有人可以帮忙吗?
答案 0 :(得分: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
答案 1 :(得分:0)
你必须写一个正则表达式吗?您可以使用^ab([a-c]*)ba$
来抓取字符串的中间部分,然后在中间运行一些检查,例如确保它至少包含一个a,b和c,并确保它不包含ba。< / p>
编辑:更好的是,您可以完全跳过正则表达式,只需执行上述所有检查,添加检查以确保它以ab开头并以ba结尾。
答案 2 :(得分:0)
我使用否定前瞻来尝试这个正则表达式:
^ab(a|b(?!a)|c)+ba$
它匹配此字符串abbcabcabbbbcccaaaaaaba
但不匹配:abbcabcabbabbcccaaaaaaba