Java //与RegEx和方括号不匹配

时间:2014-05-24 08:32:44

标签: java regex square-bracket

我有一个像

这样的字符串
Berlin -> Munich [label="590"]

现在我在Java中搜索正则表达式,检查给定行(如上所述)是否有效。 目前,我的RegExp看起来像\\w\\s*->\\s*\\w\\s*\\[label=\"\\d\"\\]" 但是,它不起作用,我发现\\w\\s*->\\s*\\w\\s*仍然有效,但在添加\\[时,它无法找到出现(\\w\\s*->\\s*\\w\\s*\\[)。 我还发现,当'->'被移除时,它会有效(\\w\\s*\\s*\\w\\s*\\[)

箭头是问题吗?难以想象。 我真的需要一些帮助。

提前谢谢

2 个答案:

答案 0 :(得分:1)

试试这个

 String message = "Berlin -> Munich [label=\"590\"]";
 Pattern p = Pattern.compile("\\w+\\s*->\\s*\\w+\\s*\\[label=\"\\d+\"\\]");
 Matcher matcher = p.matcher(message);
 while(matcher.find()) {
      System.out.println(matcher.group());
 }

您需要多个字符和数字标记。

答案 1 :(得分:1)

这是正确的正则表达式:

"\\w+\\s*->\\s*\\w+\\s*\\[label=\"\\d+\"\\]"

您报告的关于部分正则表达式的匹配和不匹配的内容非常不可能,柏林/慕尼黑字符串无法实现。

此外,如果你真的喜欢德国城市名称,你可能需要考虑像Castrop-Rauxel这样的名字(有些人称之为拉丁名Wanne-Eickel ;-))