java中的模式匹配错误

时间:2012-07-09 16:29:46

标签: java regex

当我使用以下代码段时,我遇到一个问题

 String regexString=regexPair.get(paramName);

 Pattern p = Pattern.compile(regexString);
 Matcher m = p.matcher(paramMap.get(paramName)[0]);
 status = m.matches();

它返回false

其中regexPair是hashmap而regexPair.get(paramName)是

"^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"

虽然我会替换

String regexString="^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"

然后它工作正常

paramMap.get(paramName)[0]返回agsd@gmail.com。

我不知道为什么会这样,请帮助我。

1 个答案:

答案 0 :(得分:1)

你怎么知道regexPair.get(paramName)是你给的字符串?这是一些println电话的结果吗?

我怀疑引用并不完全相同。可能regexPair.get(paramName)实际上包含'\\'后跟另一个'\\'(即连续两个真正的反斜杠),而替换只包含"\\"(这是一个反斜杠)。请注意,字符串"(\\."实际上只有3个字符。