“如何逃离”;[“在Java中的正则表达式中”

“如何逃离”;[“在Java中的正则表达式中”,java,regex,Java,Regex,我在Java中转义字符时遇到问题。我的代码如下所示: String pattern = "^\\[set (\\d+) (\\d+) \\]$"; Scanner sc = new Scanner(System.in); // Create a Pattern object Pattern r = Pattern.compile(pattern); // Now create matcher ob

我在Java中转义字符时遇到问题。我的代码如下所示:

 String pattern = "^\\[set (\\d+) (\\d+) \\]$";
            Scanner sc = new Scanner(System.in);
            // Create a Pattern object
            Pattern r = Pattern.compile(pattern);

            // Now create matcher object.

            while (true) {
                String line = sc.nextLine();
                Matcher m = r.matcher(line);
                if (m.find()) {
                    System.out.println("Found value: " + m.group(1));
                    System.out.println("Set value: " + m.group(2));
                } else {
                    System.out.println("NO MATCH");
                }
            }
我想搜索如下说明:

[第67组]


如何执行此操作?

如果您不确定可能有多少空白,请使用
\s+
匹配1+个空白,并使用
\s*
匹配零个或多个空白

见a:


查看

如果您不确定可能有多少空白,请使用
\s+
匹配1+个空白,并使用
\s*
匹配其中的零个或多个空白

见a:


请参见

删除锚定
^
$
,它与方括号及其转义方式无关。删除锚定时不起作用您还应取出最后一个空格,因为它与[set 6 7]不匹配(它将与[set 6 7]匹配):“\\\[set(\\d+)(\\d+\\\]”非常感谢。现在工作删除锚定
^
$
,它与方括号和跳出它们的方式无关。删除锚定后不工作您还应该删除最后一个空格,因为它不匹配[set 6 7](它将匹配[set 6 7]):“\\\[set(\\d+)(\\d+\\\]”非常感谢。现在工作
String rx = "\\[set\\s+(\\d+)\\s+(\\d+)\\s*]";
Pattern p = Pattern.compile(rx);
Matcher m = p.matcher("[set 6 7]");
if (m.find()) {
    System.out.println(matcher.group(1));
    System.out.println(matcher.group(2));
}