为什么这个正则表达式似乎不起作用?

时间:2014-10-01 16:25:57

标签: java regex

我有一个字符串,我想在文件中替换,当我看到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

1 个答案:

答案 0 :(得分:0)

在调用matcher.find()之前,您需要调用matcher.matches()(在输入中匹配)或matcher.group()(整个输入匹配)。

通常在if条件(或while循环内,如果迭代匹配)。

Matcher.group()API

  

<强>抛出:

     

IllegalStateException - 如果尚未尝试匹配,或者如果没有   上一场比赛操作失败