in reply to Replace newlines only if not inside braces

Replacing a target pattern everywhere except inside specific chunks, can be achieved with a regex of the following form:

s/((?:CHUNK_TO_BE_EXCLUDED|.)*?)TARGET/$1REPLACEMENT/gs

In your example, TARGET would be \n and REPLACEMENT would be \n<br>. The CHUNK_TO_BE_EXCLUDED pattern would have to match a whole block wrapped in double braces. You can use {{.*?}}\n, unless brackets can be nested and you need to guarantee that you match properly balanced pairs, in which case you can find a howto for constructing the pattern you need in perlfaq6.

Replies are listed 'Best First'.
Re^2: Replace newlines only if not inside braces
by LanX (Saint) on Feb 11, 2013 at 14:35 UTC
    Works! =)

    But it took me some time to understand why all edgecases are covered, though I'm pretty sure that I already saw this technique before.

    Cheers Rolf