【问题标题】:Replace group for all matches替换所有匹配的组
【发布时间】:2025-12-23 16:20:28
【问题描述】:

我只想替换字符串中的单词,如果没有单词字符(\w) 或连字符在单词之前或之后

文字:

#button .button large-button tinybutton size9button #9button button-large buttontiny

替换后的预期结果:

#text .text large-button tinybutton size9button #9button button-large buttontiny

正则表达式:

(?<![\w-])(button)(?![\w-])
  1. 正则表达式目前只匹配第一次出现(# 之后的按钮)。我需要做什么来匹配所有匹配项?
  2. 如何将button 替换为text 或Java 中的任何其他词?

我已阅读主题Can I replace groups in Java regex?,但我真的不明白如何将示例代码用于我的特殊情况。不幸的是,我没有任何代码可以显示。 :/

【问题讨论】:

    标签: java regex


    【解决方案1】:

    您可以在replaceAll 方法中使用否定的lookbehind 和否定的lookahead:

    str = str.replaceAll("(?<![\\w-])button(?![\\w-])", "text");
    

    您也可以使用lookarounds和word-boundary:

    str = str.replaceAll("(?<!-)\\bbutton\\b(?!-)", "text");
    

    RegEx Demo

    【讨论】:

      最近更新 更多