1

我需要为自学期间在一些讲义中发现的问题编写一个正则表达式。此正则表达式匹配 abxba 形式的字符串,其中 x 是不包含 ba 作为子字符串的 a、b 和 c 的字符串。到目前为止我所拥有的是^ab(a+c+b+|a+b+c+|b+c+a+|c+a+b+)ba$,但它显然是不完整的。有人可以帮忙吗?

4

3 回答 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 回答