我有一个字符串,我想在文件中替换,当我看到hostName=some_word
我想用some_other_word
替换它但我使用的零宽度负向后视正则表达式似乎是失败的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
答案 0 :(得分:0)
在调用matcher.find()
之前,您需要调用matcher.matches()
(在输入中匹配)或matcher.group()
(整个输入匹配)。
通常在if
条件(或while
循环内,如果迭代匹配)。
Matcher.group()
见API:
<强>抛出:强>
IllegalStateException - 如果尚未尝试匹配,或者如果没有 上一场比赛操作失败