当string是dot("。")时,如何让Pattern.matches(regex,str)返回false?

时间:2015-02-20 04:13:24

标签: java regex

我想检查字符串是否是数学运算符(+, - ,*,/)。我正在使用匹配方法来检查正则表达式的字符,但在检查只包含点(“。”)的字符串时它总是返回true。这是代码:

String dot = ".";
        if(dot.matches("[*+-/]"))
                System.out.println("BAD");
        else
                System.out.println("GOOD");

这会打印“坏”。我明白这可能与“。”这个事实有关。在正则表达式匹配一切,但我不明白为什么这会有所作为。有没有办法让这个返回虚假?谢谢。

2 个答案:

答案 0 :(得分:1)

不,您调用String的{​​{1}}不被视为正则表达式。这是字面意思。

您的案例正在打印matches,因为此BAD[*+-/]介于.+之间的字符类。将/移到最后,以便它不会创建范围-

答案 1 :(得分:1)

我打算提出一个解决这个问题的工具。

尝试regexr,它很丰富,它在侧边栏上得到了帮助,你可以更好地编写你想要的所有情况并且不想匹配的正则表达式。

为了帮助您入门,请查看此处写的非常基本的正则表达式:http://regexr.com/3af78

\d [*+/-] \d

由于我不知道您的支票有多严格或宽松,我添加了您可能想要或不想考虑的其他字符串。