2014-10-01 120 views
0

我想要替換文件中的字符串,當我看到hostName=some_word我想用some_other_word替換它,但我使用的零寬度負向lookbehind正則表達式似乎在Java代碼中失敗,儘管在我測試它時工作一個在線java正則表達式測試器。爲什麼這個正則表達式似乎不起作用?

line = "hostName=testing" 
Pattern host = Pattern.compile("(?<=hostName=).*"); 
Matcher match = host.matcher(line); 
hostName = match.group(); //illegal state exception 
line.replace(hostName,"new_name"); 

我想,一個字符串的正則表達式在線,它似乎很好地工作:

鏈接: http://ocpsoft.org/tutorials/regular-expressions/java-visual-regex-tester/#!;t=hostName%3Dtesting&r=(%3F%3C%3DhostName%3D).*&x=new_name

回答

1

您需要調用matcher.find()(輸入內匹配)或matcher.matches()(全輸入匹配),然後調用matcher.group()

通常在if條件內(或者如果遍歷匹配,則爲while循環)。

Matcher.group()API

拋出:

IllegalStateException - 如果沒有匹配尚未嘗試,或者如果 以前的匹配操作失敗

+0

好吧,是的,這絕對是這個問題,謝謝!討厭java文檔在分組之前沒有提到有關運行find()命令的任何信息 – sreya 2014-10-01 16:29:24

+1

@sreya他們做**:D請參閱我的答案中的編輯。 – Mena 2014-10-01 16:30:57

+1

是的,我是一個白癡 – sreya 2014-10-01 16:32:41

相關問題