Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: regex exercise

by choroba (Cardinal)
on Aug 02, 2016 at 22:42 UTC ( [id://1169053]=note: print w/replies, xml ) Need Help??


in reply to regex exercise

/m isn't needed, as you don't use ^ or $ in the regex. /i isn't needed, either, as <p> is always lowercase in the sample data.

I also used s%%% instead of s/// to avoid the need to backslash the slashes in endtags.

s%(<p>(?=(?:(?!</p>).)*\n\n)(?:(?!</p>).)*</p>)%-->$1<--%sg

Explanation:

The p-tag must be followed by two newlines that aren't preceded by its endtag.

You can make the regex more readable via /x :

s{ (<p> (?=(?:(?!</p>).)*\n\n) # Followed by two newlines not precede +d by </p> (?:(?!</p>).)*</p>) # Followed by </p> not preceded by </p +> }{-->$1<--}sgx;

Update: or even

my $not_followed_by_end_p = qr{(?:(?!</p>).)*}s; while (<>) { s{ (<p> (?=$not_followed_by_end_p\n\n) $not_followed_by_end_p</p>) }{-->$1<--}gx; print; }

($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1169053]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having an uproarious good time at the Monastery: (6)
As of 2024-04-18 10:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found