如何在java中使用正则表达式模式以混洗顺序查找字符串abc
的第一个匹配项?
示例:
输入1:abcbaa输入1的第一场比赛: abc baab
输入2的第一场比赛:b cba aab
输入3的第一场比赛: bca aabc
我尝试过的模式不起作用:
(?:([abc])(?!\\.*]\\1)){3}
(?!(.)\\1)[abc]{3}
以上两种模式匹配3个连续字符,包括重复值。例如: aba bac
预期: aba BAC 的
(?=.*[abc])(?=.*[abc])(?=.*[abc])
这个匹配并在每个角色之间填充空字符。即,字符串位置(0,0),(1,1),(2,2)等...
答案 0 :(得分:1)
您是否尝试过寻找所有可能性?你的例子就像这样:
(abc|acb|bca|bac|cab|cba)
答案 1 :(得分:1)
也许你应该试试这个正则表达式:
^(?=[\s\S]*(a)+)(?=[\s\S]*(b)+)(?=[\s\S]*(c)+)[\s\S]*$
答案 2 :(得分:0)
(?:a()|b()|c()){3}\1\2\3
空组的作用类似于复选框,因此如果\1\2\3
匹配,则每个字母必须至少看过一次。由于正则表达式只消耗三个字符,因此您知道每个字母中只有一个字符。