Java正则表达式未按预期工作
不知是否有人能告诉我为什么这个正则表达式不起作用 表达式->Java正则表达式未按预期工作,java,regex,Java,Regex,不知是否有人能告诉我为什么这个正则表达式不起作用 表达式->^[A-Za-z0-9$&!#-#:;\“']+$ 问题是,它与集合中不存在的字符匹配。例如,单词match正确匹配,单词match~不匹配,但match@和match!不正确匹配 我正在使用java来匹配它,匹配应该相当直接,代码如下: RE re = new RE(expression); return re.match(value); 我知道我可能错过了一些简单得可笑的东西,但如果有人对此有任何想
^[A-Za-z0-9$&!#-#:;\“']+$
问题是,它与集合中不存在的字符匹配。例如,单词match
正确匹配,单词match~
不匹配,但match@
和match!
不正确匹配
我正在使用java来匹配它,匹配应该相当直接,代码如下:
RE re = new RE(expression);
return re.match(value);
我知道我可能错过了一些简单得可笑的东西,但如果有人对此有任何想法,我将不胜感激!我怀疑它的-
出了问题。避开-
,看看这是否有帮助
新表达式将是
^[A-Za-z0-9$&!#\-\:;“']+$
问题在于字符集中的连字符-
。您正在接受从#到#的字符
将其更改为
^[-A-Za-z0-9$&!#?:;\“']+根据您的表达式,$
或escape-
匹配!是一个可接受的值。这就引出了一个问题:“为什么m
atch会通过测试?”根据您的说法m
不在字符类中。您似乎理解类的语法。您甚至似乎知道断言、量词等布鲁诺,这正是问题所在。非常感谢。