Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^2: qr for recursive regex?

by darisler (Initiate)
on May 28, 2014 at 19:15 UTC ( [id://1087706]=note: print w/replies, xml ) Need Help??


in reply to Re: qr for recursive regex?
in thread qr for recursive regex?

The example I posted is simplified - perhaps too much.

I really want repetition, not recursion, but ran into roadblock with perl behaviour of only returning the last matches. Here is what I first tried, it only returns the last coordinate pair, which is documented behaviour.

#!/usr/bin/env perl use v5.16; use strict; my $prBoundaryString = <<endPrBoundary; '( (0.01 0.02) (0.0 1328.23) (0.03 0.04) ) endPrBoundary say "prBoundaryString=$prBoundaryString"; my ($coord,$coords); $coord = qr{ \(\s* (?<x>[\-\.0-9]+)\s+ (?<y>[\-\.0-9]+)\s* \)\s* }x; $coords = qr{ ( ( $coord )+ ) }x; $prBoundaryString =~ m{ \'\(\s*\s* $coords \)\s*$ }x || die "parsePrBoundary: Error parsing prBoundary"; say "-x0=$-{x}[0]"; say "-y0=$-{y}[0]"; say "-x1=$-{x}[1]"; say "-y1=$-{y}[1]"; say "-x2=$-{x}[2]"; say "-y2=$-{y}[2]";
output: - it only gets the last coordinate.
prBoundaryString='( (0.01 0.02) (0.0 1328.23) (0.03 0.04) ) -x0=0.03 -y0=0.04 -x1= -y1= -x2= -y2=

Replies are listed 'Best First'.
Re^3: qr for recursive regex?
by Limbic~Region (Chancellor) on May 28, 2014 at 19:20 UTC
    darisler,
    If you use a regex with the global modifier in scalar context, you will get an iterator allowing you to go through each set of matches one at a time (like one of the examples above):
    while ($str =~ m{$your_regex}g) { my ($x, $y) = ($1, $2); # This loop will repeat for as many matches as are in $str }

    Cheers - L~R

Log In?
Username:
Password:

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

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

    No recent polls found