java – 正则表达式:匹配排列与重复字符,其中一个字符不能出现多次
作者:互联网
正则表达式应匹配所有字符串,长度在2到3个字符之间,并且只包含A和B([AB] {2,3}).但它也应该只匹配字符串,其中包含最多一个B.
允许的字符串:
AA
AB
BA
AAA
AAB
ABA
BAA
不允许:
ABB <– two B’s
是否有可能通过一个正则表达式实现这一目标?我试过这样的事情:
([AB]{2,3})(?<=([B]*A[B]*){2})
但它不适用于Java,因为它不支持Look-behind组的可变长度.
Exception in thread “main” java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 28
([AB]{2,3})(?<=([B]*A[B]*){2})
有什么建议?
解决方法:
您可以使用负前瞻来确保字符串没有两个B.
^(?!.*B.*B)[AB]{2,3}$
标签:java,regex,permutation,restriction 来源: https://codeday.me/bug/20190530/1183033.html