我尝试使用正则表达式来表达字符串" abc"的完整排列,其中包括" abc"," acb"," BAC"" BCA""驾驶室"" CBA&#34 ;.我知道(a|b|c){3}
可以匹配一个只包含" a"," b"的三个字符的字符串。和" c"。但是如何添加一个附加条件来指定" a"," b"和" c"每个只出现一次?
答案 0 :(得分:0)
正则表达式并不是真正的工具,如果只是这种组合,你可能想要使用“更简单”的解决方案而不依赖于正则表达式。
这就是我在Java中实现它的方法
Set<Character> allowedChars = new HashSet<>(Arrays.asList("abc".toCharArray()));
for (char c : string.toCharArray()) {
if (allowedChars.contains(c)) {
allowedChars.remove(c);
} else {
return false;
}
}
return true; // all chars in the string were in the allowed chars once
这当然现在只适用于独特的角色组合。如果您希望多次显示某些字符,则应从Set
切换为List
(允许重复值)
将其转换为您选择的另一种语言应该相当简单。