Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: Perl Regex Multiline Matching

by kcott (Archbishop)
on Oct 14, 2016 at 09:21 UTC ( [id://1173998]=note: print w/replies, xml ) Need Help??


in reply to Perl Regex Multiline Matching

G'day yoda54,

"I am a bit confused with multi line matching, how can I get the value of property name "Text" to match since it spans across multiple lines?"

The main problem with your code is that you're not dealing with multilines. You're reading one line at a time from the DATA filehandle. This is determined by the input record separator[$/] which is set to newline by default: you'd need to change this — I'd recommend localising the change in an anonymous block.

Here's the technique:

#!/usr/bin/env perl use 5.014; use strict; use warnings; my $re; BEGIN { $re = qr{(?msx: name="([^"]+)" .*? value="([^"]*)" )} +} { local $/ = '/>'; while (<DATA>) { next unless /$re/; say 'name=[', $1, ']; value=[', $2 =~ y/ \n/ /rs, ']'; } } __DATA__ <property name="Own" value=""/> <property name="Type" value="Record"/> <property name="Text" value="Sample text more sample text more more same text]."/> <property name="Unique" value="yes"/>

Output:

name=[Own]; value=[] name=[Type]; value=[Record] name=[Text]; value=[Sample text more sample text more more same text]. +] name=[Unique]; value=[yes]

— Ken

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (6)
As of 2024-04-23 13:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found