编程语言
首页 > 编程语言> > java – 正则表达式:匹配排列与重复字符,其中一个字符不能出现多次

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}$

See it

标签:java,regex,permutation,restriction
来源: https://codeday.me/bug/20190530/1183033.html