tags:

views:

62

answers:

1

Possible Duplicate:
Regex help required

I am trying to replace two or more occurences of <br/> (like <br/><br/><br/>)tags together with two <br/><br/> with the following pattern

Pattern brTagPattern = Pattern.compile("(<\\s*br\\s*/\\s*>\\s*){2,}",
    Pattern.CASE_INSENSITIVE | Pattern.DOTALL);

But there are some cases where '<br/> <br/>' tags come with a space and they get replaced with 4 <br/> tags which was actually supposed to be replaced with just 2 tags.

What can i do to ignore 2 or 3(few) spaces that come in between the tags ?

A: 

You can do that changing a little your regex:

Pattern brTagPattern = Pattern.compile("<\\s*br\\s*/\\s*>\\s*<\\s*br\\s*/\\s*>\\s*", Pattern.CASE_INSENSITIVE | Pattern.DOTALL);

This will ignore every spaces between two
. If you just want exactly 2 or three, you can use:

Pattern brTagPattern = Pattern.compile("<\\s*br\\s*/\\s*>(\\s){2,3}<\\s*br\\s*/\\s*>\\s*", Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
greuze
Neither of those lines will compile in Java
tim_yates
I used the same syntax that the user used in the question, I don't know the language he is using. I just added the thing he needed in the middle, using his syntax (he didn't say it was Java). In Java you should double-escape the characters (but you should change the question in that case)
greuze
You use the right syntax since the edit, the question was always tagged as Java, and the regular expression in the question is fine, and works as expected. Changing the regex wasn't required http://stackoverflow.com/questions/3872652/regex-help-required
tim_yates