You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中Matcher类无法匹配calm://链接正则模式问题求助

问题原因及修复方案

你代码里的正则写法存在3个核心错误:

  • 混用了JavaScript风格的正则语法:Java的Pattern类不支持/正则/修饰符的写法,不需要加首尾的/,尾部的gi也不能直接写在正则串里。忽略大小写需要通过Pattern.CASE_INSENSITIVE参数指定,全局匹配不需要额外参数,多次调用matcher.find()即可实现。
  • 字符串转义不符合Java规则:Java字符串中反斜杠本身需要转义,正则语法里的\b单词边界在Java字符串中要写为\\b,同时/在Java正则中不需要加反斜杠转义。
  • 正则规则冗余且未定义捕获组:calm?中的?会让末尾的m变成可选匹配,不符合你的匹配需求;原正则没有定义任何捕获组,直接调用group(1)会抛出索引越界异常,提取整个匹配结果调用group(0)即可。

修正后可运行代码

String test = "Calm_fit calm://listpage?pageid=fitnesstab SomeText";
Pattern pattern = Pattern.compile("\\bcalm://\\S+", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(test);
System.out.println("Here 1");

if (matcher.find()) {
    System.out.println("Here 2 Matched: " + matcher.group(0));
}

运行后即可正常提取到目标链接calm://listpage?pageid=fitnesstab。

内容的提问来源于stack exchange,提问作者Ayusch Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:27:03