如何使用java正则表达式检测一个字符串包含几个字符中的一个
我有一个可变长度的字符串,我只想检测这个字符串是否包含几个字符。例如:如何使用java正则表达式检测一个字符串包含几个字符中的一个,java,regex,Java,Regex,我有一个可变长度的字符串,我只想检测这个字符串是否包含几个字符。例如: "sadsdd$sss^dee~" 我想检测此字符串是否包含以下内容:$^~。如何使用Javastring.matches "sadsdd$sss^dee~".matches("[^+$+~+]"); 如果您确实必须使用匹配项,请尝试这种方法 myString.matches(".*[$^~].*"); 匹配检查正则表达式是否可以完全匹配字符串,因此除了您感兴趣的部分之外,您还需要让它匹配前后部分,这应该由*处理。为此
"sadsdd$sss^dee~"
我想检测此字符串是否包含以下内容:$
^
~
。如何使用Javastring.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次迭代。这是否仍比匹配正则表达式(即使正则表达式是预编译的)性能更好?简短回答:是!比正则表达式快得多。