I am trying to split some text into an array seperated by one or more
<br>
Here is some test code:
s = "one<br>two<br><br>three<br><br><br>four"
p s.split(/(<br>)+/);
it should split into ["one","two","three","four"] because the /
(<br>)+/ pattern should use one or more <br> as the pattern to split
around
but it does this
["one", "<br>", "two", "<br>", "three"]
Why does it do this and what split could I use to get it to work?
Note:, I know that I could just fix it by removeing the <br> lines
after it is done from the array, but it seems that the regular
expression in split should work.
If pattern is a String, then its contents are used as the delimiter when splitting str. If pattern is a single space, str is split on whitespace, with leading whitespace and runs of contiguous whitespace characters ignored.
If pattern is a Regexp, str is divided where the pattern matches. Whenever the pattern matches a zero-length string, str is split into individual characters.
Which seems to be saying exactly what you are are describing. If a regexp is used the match isn't "eaten", but simply divided on.
You could split it on "<br>" and then remove any blank elements... not sure if that's any better than your alternative approach though.