我想检查字符串以查看它是否包含^符号,以及它是否向用户显示消息。
由于
Pattern p = Pattern.compile("[a-z0-9 ]", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("StringGoesHere");
boolean b = m.find();
if (b){
System.out.println("bad");
} else {
System.out.println("fine");
}
答案 0 :(得分:15)
正则表达式可能有点矫枉过正,只需使用String.contains()
如果您渴望使用正则表达式,请使用"\\^"
:\\
将提供单个\
,这违反了^
字符的特殊含义。< / p>
答案 1 :(得分:10)
为什么不
String str = "StringGoesHere";
if( str.indexOf('^') != -1 )
{
System.out.println( "bad" );
}
else
{
System.out.println("fine");
}
答案 2 :(得分:1)
Pattern p = Pattern.compile("\\^");
答案 3 :(得分:1)
实际上,最简单的答案是:不要使用正则表达式,只搜索字符本身。
答案越长:查看转义上正则表达式语法的详细信息。
在charcter类中,^
仅在第一个符号时才是特殊的。因此[a-z^]
将匹配a-z
或 ^
中的任何一个,而[^a-z]
则匹配除a-z
以外的所有内容(自^
起因为第一个字是否定的。)
在字符类之外,^
匹配行的开头,除非您使用\
将其转义。对于Java内联字符串,您需要将其写为"\\^"
。