gpt4 book ai didi

Java 正则表达式 : matches(pattern, 值)返回 true 但 group() 无法匹配

转载 作者:太空狗 更新时间:2023-10-29 23:03:37 30 4
gpt4 key购买 nike

我对 Java 中的正则表达式有一个奇怪的问题。我测试了我的正则表达式和我的值 here它有效。它说有 3 个组(正确)第一组的匹配(不是第 0 组!)是 SSS,第 2 组的匹配是 BB,第 3 组的匹配是 0000。但是我下面的代码失败了,我很在损失为什么...

String pattern = "([^-]*)-([\\D]*)([\\d]*)";
String value = "SSS-BB0000";
Matcher matcher = Pattern.compile(pattern).matcher(value);
//group() is equivalent to group(0) - it fails to match though
matcher.group();

下面是上述网站匹配结果的截图: enter image description here

如果有人能指出我所犯的错误,我将不胜感激……另外请注意:奇怪的是,如果我执行以下代码,则会返回 true,这意味着匹配应该是可能的……

//returns true
Pattern.matches(pattern, value);

最佳答案

你需要在group()之前调用find():

String pattern = "([^-]*)-([\\D]*)([\\d]*)"; 
String value = "SSS-BB0000";
Matcher matcher = Pattern.compile(pattern).matcher(value);
if (matcher.find()) {
System.out.println(matcher.group()); // SSS-BB0000
System.out.println(matcher.group(0)); // SSS-BB0000
System.out.println(matcher.group(1)); // SSS
System.out.println(matcher.group(2)); // BB
System.out.println(matcher.group(3)); // 0000
}

当您调用 matcher(value) 时,您只是在创建一个能够匹配您的 valueMatcher 对象。为了实际扫描输入,您需要使用 find()lookingAt():

引用资料:

关于Java 正则表达式 : matches(pattern, 值)返回 true 但 group() 无法匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7033082/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com