У меня есть строка, которую я хочу заменить в файле, когда я вижу hostName=some_word
Я хочу заменить его на some_other_word
, но ядро отрицательного lookbehind с нулевой шириной, которое я использую, похоже, не работает в 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
Хорошо, да это это определенно проблема! Раздражает то, что в java-документах ничего не говорится о запуске команды find() перед группировкой – sreya
@sreya они ** делают **: D см. В моем ответе. – Mena
Да, я идиот – sreya