java String.replaceВсе вопрос регулярных выражений - PullRequest
0 голосов
/ 14 октября 2010

У меня есть строка, которая содержит следующий текст

String my_string = "hello world. it's cold out brrrrrr! br br";

Я хотел бы заменить каждый изолированный br на <br />

Проблема в том, что я хотел бы избежать преобразования строки в

"hello world. it's cold out <br />rrrrr! <br /> <br />";

Что я хотел бы сделать, это преобразовать строку (используя replaceAll) в

"hello world. it's cold out brrrrrr! <br /> <br />";

Я уверен, что это очень просто, но мое регулярное выражение неверно.

my_string.replaceAll("\\sbr\\s|\\sbr$", "<br />");

мое регулярное выражение предполагается , чтобы найти «пробел» «b» «r» «пробел»ИЛИ «пробел», «b», «r», «конец строки»

, но он пропускает последний «br» в моей строке

"hello world. it's cold out brrrrrr!<br />br"

что я делаю неправильно ??TKS!

Ответы [ 2 ]

8 голосов
/ 14 октября 2010

Использование

my_string.replaceAll("\\bbr\\b", "<br />");

Ваше регулярное выражение не работает, потому что в

␣br␣br
^

шаблон \sbr\s будет потреблять все ␣br␣, оставляя с

<br />br
      ^

теперь для этого br нет предшествующего пробела, совпадающего с \sbr$, поэтому он будет пропущен.

С другой стороны, \b, что означает слово-Граница, это утверждение нулевой ширины, то есть оно не будет использовать никаких символов.Следовательно, пробелы будут сохранены, и все изолированные br будут сопоставлены.

0 голосов
/ 14 октября 2010

"hello world. it's cold out brrrrrr!<br />br" Ваш последний 'br' не предшествует пробел.Что должно произойти?

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