2016-03-03 65 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