Я хотел бы использовать string.replaceAll() для замены всех последовательностей символов , начинающихся с '@', '$' или ':' и , заканчивающихся на ' '(пробел). До сих пор у меня есть это:Java replaceAll() заменяет только один экземпляр.
string = string.replaceAll("[@:$]+.*?(?=)", "ZZZZ");
Однако регулярное выражение используется только заменяет первый экземпляр, который отвечает указанным выше критериям. Таким образом, учитывая строку:
"SELECT title FROM Name WHERE nickname = :nickname AND givenName = @givenName AND familyName = $familyName"
ток (неправильный) вывод:
"SELECT title FROM Name WHERE nickname = ZZZZ AND givenName = @givenName AND familyName = $familyName"
Желаемый результат:
"SELECT title FROM Name WHERE nickname = ZZZZ AND givenName = ZZZZ AND familyName = ZZZZ"
Как я могу изменить регулярное выражение для получения желаемых результатов?
[Это не выход, который я получаю.] (Http://ideone.com/SmCYgl) –
Кроме того, '[...] $ familyName" 'не заканчивается пробелом. –
Ах, похоже, имя семейства не заканчивая пробелом, это ошибка, в конце концов, хорошая сметка. Любая идея, как настроить регулярное выражение, чтобы поменять имя семейства, когда после него нет места? –