Использование String's ReplaceAll с регулярным выражением - PullRequest
1 голос
/ 12 марта 2012

Как восстановить следующее String комбинация:
word1 = "word2"
Со следующим String комбинация:
word1 = "word3"

Использование границ слов \b.

Я использовал следующее, но не сделалработа:

String word2 = "word2";
String word3 = "word3";
String oldLine = "word1=\"" + word2 + "\"";
String newLine = "word1=\"" + word3 + "\"";
String lineToReplace = "\\b" + oldLine + "\\b";
String changedCont = cont.replaceAll(lineToReplace, newLine);

Где cont - это Строка , которая содержит много символов, включая word1 = "word2" Строка .

Ответы [ 5 ]

1 голос
/ 12 марта 2012

У вас есть границы слов \ b внутри вашей строки ("), и вы используете границы слов в своем регулярном выражении. Удалите этот последний \ b, например.

1 голос
/ 12 марта 2012

Если вы замените lineToReplace строку следующим образом:

String lineToReplace = "\\b" + oldLine + "(?!\\w)";

Это должно работать так, как вы хотите.

1 голос
/ 12 марта 2012
String input = "alma word1=\"word2\"";
String replacement = "word1=\"word3\"";
String output = input.replaceAll("\\bword1=\\\"word2\\\"", replaceMent);
1 голос
/ 12 марта 2012

Удалить последние \b. Это не будет делать то, что вы думаете, " это не символ слова.

0 голосов
/ 12 марта 2012

Единственная нужная вам граница слова находится спереди - в остальной части вашего соответствия уже встроены границы слов (кавычки и т. Д.).

Это будет работать:

 cont.replaceAll("\\bword1=\"word2\"", "word1=\"word3\"");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...