2014-10-01 125 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

相关问题