Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java正则表达式检测一个字符串包含几个字符中的一个_Java_Regex - Fatal编程技术网

如何使用java正则表达式检测一个字符串包含几个字符中的一个

如何使用java正则表达式检测一个字符串包含几个字符中的一个,java,regex,Java,Regex,我有一个可变长度的字符串,我只想检测这个字符串是否包含几个字符。例如: "sadsdd$sss^dee~" 我想检测此字符串是否包含以下内容:$^~。如何使用Javastring.matches "sadsdd$sss^dee~".matches("[^+$+~+]"); 如果您确实必须使用匹配项,请尝试这种方法 myString.matches(".*[$^~].*"); 匹配检查正则表达式是否可以完全匹配字符串,因此除了您感兴趣的部分之外,您还需要让它匹配前后部分,这应该由*处理。为此

我有一个可变长度的字符串,我只想检测这个字符串是否包含几个字符。例如:

"sadsdd$sss^dee~"
我想检测此字符串是否包含以下内容:
$
^
~
。如何使用Java
string.matches

"sadsdd$sss^dee~".matches("[^+$+~+]");

如果您确实必须使用
匹配项
,请尝试这种方法

myString.matches(".*[$^~].*");

匹配
检查正则表达式是否可以完全匹配字符串,因此除了您感兴趣的部分之外,您还需要让它匹配前后部分,这应该由
*
处理。

为此使用模式和匹配器:

Pattern pattern = Pattern.compile("[$~^]");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
   // contains special characters
} else {
   // doesn't contain special characters
}

如何检测一个字符串是否包含另一个字符串中的几个字符之一:

如果您想要快速解决方案:

public static void main(String[] args) {
    System.out.println(containsChars("sadsdd$sss^dee~", "$^~"));
}

public static boolean containsChars(String str, String chars) {
    for (int i = 0; i < chars.length(); i++) {
        char c = chars.charAt(i);
        for (int j = 0; j < str.length(); j++) {
            if (c == str.charAt(j)) {
                return true;
            }
        }
    }
    return false;
}
publicstaticvoidmain(字符串[]args){
System.out.println(containsChars(“saddd$sss^dee~”,“$^~”);
}
公共静态布尔容器(字符串str、字符串字符){
对于(int i=0;i

当然没有正则表达式那么小或优雅,但是它很快。

你需要分别循环每个字符。你的字符串需要包含所有的
$
^
~
字符还是一个就足够了?@BalintBako:不需要在字符类中转义。虽然不是OP要求的,但它是更好的方法+1@Pshemo:您认为OP的问题是检查所有3个字符的存在吗?不,我的意思是OP询问的是
string.matches()
solution。这看起来不是很快,因为如果字符串不包含任何字符,它需要进行m*n次迭代。这是否仍比匹配正则表达式(即使正则表达式是预编译的)性能更好?简短回答:是!比正则表达式快得多。