Java正则表达式匹配+ / - / * /%

时间:2013-01-29 01:50:29

标签: java regex

所以我有一个我想要解析的字符串,我不能让我的正则表达式工作。我使用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");

有什么想法吗?

2 个答案:

答案 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(".*[-+*/%].*"))

注意:如果连字符是第一个或最后一个,[]之间的字符不需要转义