yewanji 2022-05-20 10:31 采纳率: 36.2%
浏览 84
已结题

java 正则匹配字符进行替换字符匹配多组的时候有误

问题是这样的,我需要将大括号的文字进行加粗处理
比如 从{二仙桥}到成华大道
变成 二仙桥到成华大道
代码如下

 Pattern PATTERN = Pattern.compile("\\{(\\S+)}");
        String str = "从{二仙桥}到{成华大道}";
        Matcher matcher = PATTERN.matcher(str);
        while (matcher.find()) {
            String key = matcher.group(0);
            String value = matcher.group(1);
            str = str.replace(key, String.format("<span style='font-weight:bold'>%s</span>", value));
         // 输出的结果 从<span style='font-weight:bold'>二仙桥}到{成华大道</span>
  }

但是问题来了,如果你的大括号是多组的情况下,会匹配有问题,因为\S是匹配所有非空字符 而大括号也是属于非空字符
导致替换有误,但是我们在匹配的时候,是把{} 做为一组

  • 写回答

5条回答 默认 最新

  • yewanji 2022-05-20 10:57
    关注

    我已解决,通过正则非贪婪匹配Pattern.compile("\{(.+?)}");

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月21日
  • 修改了问题 5月20日
  • 创建了问题 5月20日

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝