Java正则表达式如何查找字符串是否包含字符,但顺序不是问题

Java正则表达式如何查找字符串是否包含字符,但顺序不是问题,java,regex,Java,Regex,我有这样的弦“abcdefgh” 我想检查字符串是否包含以下字符[fcb] 条件是:字符串必须包含任何顺序的所有字符 如何为这个编写正则表达式 我尝试了以下正则表达式: *[fcb].*-->在这种情况下,它不会检查所有字符。如果任何一个字符匹配,它将返回true您可以获取字符数组并对其进行排序。之后,您可以检查它是否包含*b.*c.*f.* public static boolean contains(String input) { char[] inputChars = input.

我有这样的弦“abcdefgh”

我想检查字符串是否包含以下字符[fcb]

条件是:字符串必须包含任何顺序的所有字符

如何为这个编写正则表达式

我尝试了以下正则表达式:


*[fcb].*-->在这种情况下,它不会检查所有字符。如果任何一个字符匹配,它将返回true

您可以获取字符数组并对其进行排序。之后,您可以检查它是否包含
*b.*c.*f.*

public static boolean contains(String input) {
    char[] inputChars = input.toCharArray();
    Arrays.sort(inputChars);
    String bufferInput = String.valueOf(inputChars);
    // Since it is sorted this will check if it simply contains `b,c and f`.
    return bufferInput.matches(".*b.*c.*f.*");
}

public static void main(String[] args) {
    System.out.println(contains("abcdefgh"));
    System.out.println(contains("abdefgh"));
}
输出:

true 
false

这将检查字符串中是否存在所有字母

public class Example {

public static void main(String args[]) {

    String stringA = "abcdefgh";

    String opPattern = "(?=[^ ]*f)(?=[^ ]*c)(?=[^ ]*b)[^ ]+";
    Pattern opPatternRegex = Pattern.compile(opPattern);

    Matcher matcher = opPatternRegex.matcher(stringA);

    System.out.println(matcher.find());

}
}

不要使用正则表达式。只需使用
String.contains
依次测试每个字符:

in.contains("f") && in.contains("c") && in.contains("b")

对此,您可以使用
正向前瞻

(?=.*b)(?=.*c)(?=.*f)

效率不高但易于理解:

if (s.matches(".*b.*") && s.matches(".*c.*") && s.matches(".*f.*"))

您是否尝试过
[fcb]+
?@MarounMaroun匹配
“fff”
@MarounMaroun排序后,顺序不再重要,它只是检查是否存在所有值。(或者我确实有一个逻辑错误)它比正则表达式检查更有效吗?我不知道,只是问一下。比一个正则表达式有效得多。比多个正则表达式更有效。这很好。但我不明白你的模式逻辑。你能解释一下或者贴个链接吗。所以这会有帮助