gpt4 book ai didi

java - 为什么我的正则表达式匹配但不捕获组?

转载 作者:行者123 更新时间:2023-11-30 06:22:01 25 4
gpt4 key购买 nike

我正在尝试从以下字符串中提取信息:

//YES: We got a match.

我想提取定义两个组的信息

  • // 之间的所有内容:
  • 后面的所有其他内容:

模式匹配正确,但我无法提取组。

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

我也对命名组进行了尝试:

String COMMENT_PATTERN = "//(?<init>\\w+):(?<rest>.*)";
...
matcher.group("init"); // raises an exception

为什么我的模式不能提取指定的组?

最佳答案

您必须在 matcher 上调用 find()matches() 以使其运行匹配过程,然后才能提取组。

example.matches(COMMENT_PATTERN);

创建自己的内部 Matcher,调用 matches() 然后丢弃 Matcher - 它等同于

Pattern.compile(COMMENT_PATTERN).matcher(example).matches()

关于java - 为什么我的正则表达式匹配但不捕获组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19757538/

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