0

I have a string that contains the following text

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

I'd like to replace each isolated br with <br />

The issue is that I'd like to avoid converting the string to

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

What I'd like to do is convert the string (using replaceAll) to

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

I'm sure this is very simple, but my regex isn't correct.

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

my regex is supposed to find 'whitespace' 'b' 'r' 'whitespace' OR 'whitespace' 'b' 'r' 'end of line'

but it misses the final "br" in my string

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

what am I doing wrong?? TKS!

1
  • "hello world. it's cold out brrrrrr!<br />br" Your final 'br' isn't preceded by whitespace. Commented Oct 14, 2010 at 17:38

2 Answers 2

8

Use

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

Your regex doesn't work because in

␣br␣br
^

The pattern \sbr\s will consume the whole ␣br␣, leaving with

<br />br
      ^

now there is no preceding space for this br to match \sbr$, so it will be missed.

On the other hand, the \b, meaning a word-boundary, is a zero-width assertion, i.e. it won't consume any characters. Therefore the spaces will be kept and all isolated br's will be matched.

Sign up to request clarification or add additional context in comments.

10 Comments

ok, so let me see if i get this straight... \b is word boundary, right? and apparently it works on "end of line" too?
The end of a line is a word boundary if the last character in the line is a word character:. More info: regular-expressions.info/wordboundaries.html
@Tony: not reproducible. What kind of Java are you using?
Comment deleted. I didn't notice the OP's string didn't meet his own criteria about leading whitespace.
@Tony: This is because < and b form a word boundary. Since OP doesn't specify what to do in this case, I don't think it is a "bad" result.
|
0

"hello world. it's cold out brrrrrr!<br />br" Your final 'br' isn't preceded by whitespace. What's supposed to happen?

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.