2

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

有任何想法吗?

4

2 回答 2

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());
}
于 2013-01-29T01:55:10.000 回答
0

matches()必须匹配整个输入,但您需要做的就是添加.*到每一端:

if (tmp.matches(".*[-+*/%].*"))

Note: Characters between [] don't need escaping if the hyphen is first or last.

于 2013-01-29T02:23:52.777 回答