2016-03-03 62 views
2

我只想替换字符串中的单词,如果没有单词字符(\w)或连字符前后这个词。替换组为所有匹配

文本

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

正则表达式:

更换

Exptected结果后

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

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

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

回答

0

您可以使用负回顾后和负前瞻中replaceAll方法:

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

或者您可以使用lookarounds和字边界:

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

RegEx Demo