如果字符串以a
或b
开头,我可以使用以下正则表达式。
Pattern p = Pattern.compile("^(a|b)");
Matcher m = p.matcher("0I am a string");
boolean b = m.find();
System.out.println("....output..."+b);
但我需要检查字符串是否以*
或^
等特殊字符开头。在这种情况下,以下regexp会出现Pattern错误。
Pattern p = Pattern.compile("^(*|^)");
Matcher m = p.matcher("0I am a string");
boolean b = m.find();
System.out.println("....output..."+b);
如何使用正则表达式检查号码是以*
还是^
开头
答案 0 :(得分:3)
像|*.[](){}?+^$
这样的字符在正则表达式中具有特殊含义。使用[\^*]
(仅在[]
]
内-
和^(\*|\^)
具有特殊含义),或者像{{1}}一样转义它们。
答案 1 :(得分:0)
*
和^
是正则表达式中需要转义的特殊字符,因此您需要使用\
来转义它。
有关详细信息,请参阅this link。
答案 2 :(得分:0)
使用此:
"0I am a string".matches("[\\^*].*");
答案 3 :(得分:0)
您可以尝试使用'(\^|\*)[0-9]+'
。
由于^
和*
都是正则表达式中的特殊字符,因此您需要将\
放在它们之前。
如果您希望整个字符串必须与之匹配,请将正则表达式置于^
和$
之间。
答案 4 :(得分:0)
感谢mathematical.coffee提供了很好的回复
最后,我找到了一个解决方案,使用^[*^]
作为regexp来测试字符串是否包含*
或^
源代码
Pattern p = Pattern.compile("^[*^]");
Matcher m = p.matcher("I am a string");
boolean b = m.find();
System.out.println("....output..."+b);