我的情况是正则表达式是这样的:
^b?A+b?$
因此b
可能在字符串0或1开头匹配,而A
必须匹配一次或多次。再次b
可能在字符串结尾处匹配0或1次。
现在我想修改这个正则表达式,使其在字符串的开头或结尾处匹配b
,但不能同时匹配。{/ p>
我该怎么做?
答案 0 :(得分:9)
你可以使用reresxps中的一个漂亮的“或”运算符。
^(b?A+|A+b?)$
答案 1 :(得分:2)
试试这个:
^(bA+|A+b?)$
这允许在开始时b
,然后在开始时至少有一个A
或一些A
,最后可选b
。这涵盖了所有可能性,并且在它不匹配的情况下比接受的答案略快,因为只需要测试两个选项中的一个(假设A
不能以b
开头)。
只是与这里的其他答案不同,如果表达式A非常复杂但b很简单,那么您可能希望使用负向前瞻来避免重复A
中的整个表达式正则表达式:
^(b(?!.*b$))?A+b?$
如果您的A很复杂,第二个可能更具可读性,但如果性能是个问题,我建议采用第一种方法。
答案 2 :(得分:1)
^(b+A+b?|b?A+b+)$
为什么不起作用?