我有这样的字符串“abcdefgh”
我想检查字符串是否包含以下字符 [fcb]
条件是:字符串必须包含 任何顺序中的所有字符。
如何为此编写正则表达式。
我尝试了以下正则表达式:
。* [fcb]。* --->在这种情况下,它不会检查所有字符。如果任何一个字符匹配,它将返回true
答案 0 :(得分:5)
不要使用正则表达式。只需使用String.contains
依次测试每个字符:
in.contains("f") && in.contains("c") && in.contains("b")
答案 1 :(得分:2)
你可以得到这个问题并对其进行排序。之后,您可以检查它是否包含.*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
答案 2 :(得分:1)
这将检查字符串中是否存在所有字母。
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());
}
}
答案 3 :(得分:1)
您可以将positive lookahead
用于此
(?=.*b)(?=.*c)(?=.*f)
答案 4 :(得分:0)
不是很有效但很容易理解:
if (s.matches(".*b.*") && s.matches(".*c.*") && s.matches(".*f.*"))