我试图从以下字符串中提取信息:
//YES: We got a match.
Run Code Online (Sandbox Code Playgroud)
我想提取定义两个组的信息
//和之间的一切::模式匹配正确,但我无法提取组.
String example = "//YES: We got a match.";
String COMMENT_PATTERN = "//(\\w+):(.*)";
Pattern pattern = Pattern.compile(COMMENT_PATTERN);
example.matches(COMMENT_PATTERN); // true
Matcher matcher = pattern.matcher(example);
matcher.group(1); // raises an exception
Run Code Online (Sandbox Code Playgroud)
我也尝试过命名组:
String COMMENT_PATTERN = "//(?<init>\\w+):(?<rest>.*)";
...
matcher.group("init"); // raises an exception
Run Code Online (Sandbox Code Playgroud)
为什么我的模式无法提取指定的组?
你必须调用其中find()或matches()上matcher以使其运行在匹配过程,然后才能提取组.该
example.matches(COMMENT_PATTERN);
Run Code Online (Sandbox Code Playgroud)
创建自己的内部匹配器,调用matches()然后丢弃匹配器 - 它相当于
Pattern.compile(COMMENT_PATTERN).matcher(example).matches()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
445 次 |
| 最近记录: |