【发布时间】:2012-08-10 11:01:45
【问题描述】:
我正在编译一个正则表达式模式以匹配调试控制台中的特定命令,其中之一是:
Pattern.compile("^\\s*\\\\connect\\s+((\\d{1,3}\\.){3}\\d{1,3})(?:\\s+(\\d+))?\\s*$");
所以可以进入
\connect 127.0.0.1 2345
或离开港口
\connect 127.0.0.1
只要我最后使用一个空格来分隔字段,空格就会被忽略。
它工作得很好,但是,当 ip 进入第 1 组(没问题)时,端口进入第 3 组(如我所知)。
所以我想对ip地址的前三部分使用非捕获组:
Pattern.compile("^\\s*\\\\connect\\s+((?:\\d{1,3}\\.){3}\\d{1,3})(?:\\s+(\\d+))?\\s*$");
所以我想我会得到第 1 组中的 ip 和第 2 组中的端口。 但是现在 Matcher.matches() 为相同的输入返回 false ......问题出在哪里?
【问题讨论】: