The reason is that regex functions try to operate in a greedy manner. That is, the longest match possible is returned. With newline characters, the tag opened with could not match, because we were looking for “.*” as value, which means “any character except newline any times.” Without newline characters, the whole tag opened with now fulfills this pattern. To ensure that we still find the inner tags, we’d have to change the regular expression, for example, as follows:
"([^>]*)"
For the value, we now look for “[^>]*”, which means “all but character < any times.” Therefore, subtags do not fit any longer as part of a value.