所以我有一个我想要解析的字符串,我不能让我的正则表达式工作。我使用https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp作为我的正则表达式指南。
我希望我的正则表达式匹配以下任何符号。
+ - * % /
我的代码如下。输入字符串:D[1]+D[0]
。应该打印为true ... 但是打印为false。
String tmp = "D[1]+D[0]";
if(tmp.matches("[\\+\\-\\*\\/\\%]"))
System.out.println("true");
else
System.out.println("false");
有什么想法吗?
答案 0 :(得分:4)
这是因为matches
希望匹配整个字符串,而不仅仅是它的任何部分。
您不需要转义方括号内的字符。
String str = "D[1]+D[0]";
Pattern p = Pattern.compile("[+-/*]");
Matcher m = p.matcher(str);
if (m.find()) {
System.out.println("Found: " + m.group());
}
答案 1 :(得分:0)
matches()
必须与整个输入相匹配,但您只需要为每一端添加.*
:
if (tmp.matches(".*[-+*/%].*"))
注意:如果连字符是第一个或最后一个,[]
之间的字符不需要转义。