заменив регулярное выражение в строке Java - PullRequest
1 голос
/ 31 января 2009

У меня есть эта строка Java:

String bla = "<my:string>invalid_content</my:string>";

Как мне заменить кусок "invalid_content"?

Я знаю, что должен использовать что-то вроде этого:

bla.replaceAll(regex,"new_content");

чтобы иметь:

"<my:string>new_content</my:string>";

но я не могу найти, как создать правильное регулярное выражение

помогите пожалуйста:)

Ответы [ 5 ]

8 голосов
/ 31 января 2009

Вы могли бы сделать что-то вроде

String ResultString = subjectString.replaceAll("(<my:string>)(.*)(</my:string>)", "$1whatever$3");
6 голосов
/ 01 февраля 2009

Ответ Марка будет работать, но его можно улучшить двумя простыми изменениями:

  • Центральные скобки излишни, если вы не используете эту группу.
  • Если не использовать несколько жетонов my: string, это поможет сделать его не жадным.

Предоставление:

String ResultString = SubjectString.replaceAll
    ( "(<my:string>).*?(</my:string>)" , "$1whatever$2" );


Но я бы так не написал - замену можно упростить, используя lookbehind и lookahead, и вы можете избежать повторения имени тега, например:

String ResultString = SubjectString.replaceAll
    ( "(?<=<(my:string)>).*?(?=</\1>)" , "whatever" );

Конечно, этот последний может быть не таким дружелюбным для тех, кто еще не знает регулярные выражения - он, однако, более удобен в обслуживании / гибок, поэтому его стоит использовать, если вам может потребоваться сопоставить больше, чем просто теги my: string. 1015 *

1 голос
/ 01 февраля 2009

См. Учебник по регулярным выражениям Java и ознакомьтесь с классами символов и группами захвата.

0 голосов
/ 31 января 2009

Является ли invalid_content фиксированным значением? Если это так, вы можете просто заменить это новым контентом, используя:

bla = bla.replaceAll("invalid_content","new_content");
0 голосов
/ 31 января 2009

PCRE будет:

/invalid_content/

Для простой замены. Что еще ты хочешь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...