[英]How to use Pattern.matches with regex to filter unwanted characters in a string
[英]How to get Pattern.matches(regex, str) to return false when str is dot (“.”)?
我想检查字符串是否是数学运算符(+,-,*,/)。 我正在使用matchs方法根据正则表达式检查字符,但是在检查仅包含点(“。”)的字符串时,它始终返回true。 这是代码:
String dot = ".";
if(dot.matches("[*+-/]"))
System.out.println("BAD");
else
System.out.println("GOOD");
打印“ BAD”。 我知道这可能与“。”有关。 在正则表达式中匹配所有内容,但我不明白为什么这会有所作为。 有什么办法让这个返回假? 谢谢。
不,您调用的String
matches
不被视为正则表达式。 从字面上看。
您的情况是打印BAD
,因为此[*+-/]
是一个字符类,其中.
介于+
和/
之间。 将-
移至末尾,以免创建范围[*+/-]
。
我将建议用于解决此问题的工具。
尝试使用regexr,它色彩缤纷,在侧边栏上也有帮助,您可以在需要和不希望匹配的所有情况下更好地编写正则表达式。
要开始使用,请查看此处编写的真正的基本正则表达式: http : //regexr.com/3af78 。
\d [*+/-] \d
由于我不知道您希望检查的严格程度或宽松程度,因此我添加了您可能会或可能不会考虑的其他字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.