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

Java//与RegExp和方括号不匹配,java,regex,square-bracket,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*\\

我有一根像

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*\\[)

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

提前谢谢

试试这个

 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());
 }

您需要一个以上的字符和数字标记。

这是正确的正则表达式:

"\\w+\\s*->\\s*\\w+\\s*\\[label=\"\\d+\"\\]"
关于部分正则表达式的匹配和非匹配的报告是不太可能的,对于Berlin/Munich字符串是不可能的


此外,如果你真的很喜欢德国城市名称,你可能需要考虑诸如“代码> CasPras-Ruxel[/Cord]”(有些人称之为“代码名> WANE EKEEL< <代码>;”)/< P>为什么while循环?它将在<代码>消息< /代码>中解析一些有趣的字符串。应该是所有必需的。@laune这是一个测试代码,以确保正则表达式与那些有趣的组不匹配,在这种情况下它不会匹配。好的,\\w之后的+完成了这个技巧。但是我需要它们做什么呢?如果我没有弄错的话,+表示“发生一次或几次”,而只\\w”一次“。但是上面示例中的单词只包含一个单词,为什么\\w不起作用?@Andy\w是一个单词字符,而不是整个单词