Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re^2: Regex Optional capture doesn't

by NetWallah (Canon)
on Oct 05, 2017 at 16:39 UTC ( [id://1200745]=note: print w/replies, xml ) Need Help??


in reply to Re: Regex Optional capture doesn't
in thread Regex Optional capture doesn't

It does not.

Same result with ".+?".

                All power corrupts, but we need electricity.

Replies are listed 'Best First'.
Re^3: Regex Optional capture doesn't
by LanX (Saint) on Oct 05, 2017 at 16:47 UTC
    Yep, just tested.

    But I think the explanation is still the same. (point 1)

    The fix doesn't work because the regex has to decide which non-greedy ? has "precedence".

    I know there are ways to handles this in one regex, but my advice is just to use a second one checking the tail of the string. (point 2)

    Cheers Rolf
    (addicted to the Perl Programming Language and ☆☆☆☆ :)
    Je suis Charlie!

      Hmmm

      > The fix doesn't work because the regex has to decide which non-greedy ? has "precedence".

      strange, it works like I initially thought

      DB<63> print join "|",'abc' =~ /a(.+?)(c)?/ b|c DB<64> print join "|",'abd' =~ /a(.+?)(c)?/ b|

      well you seem to have other issues I can't see.

      EDIT

      Interesting

      DB<84> print join "|",'a<c1<c2' =~ /(.+?)<(c.)?/ # ok a|c1 DB<85> print join "|",'a<b1<b2' =~ /(.+?)<(c.)?/ # ok a| DB<86> print join "|",'a<b1<c2' =~ /(.+?)<(c.)?/ # oops a|

      you might want to use use re 'debug' to parse whats happening.

      update

      ah now it's clearer

      DB<89> print join "|",'a<b1<c2' =~ /(.+?)(c.)?/ a|

      The non-greedy is finishing as soon as it succeeds, and c. is optional

      Cheers Rolf
      (addicted to the Perl Programming Language and ☆☆☆☆ :)
      Je suis Charlie!

        Ok - your explanation makes sense... Thanks (++).

        I'll wait to see of other monks can find a way to do what I need with a single regex.

                        All power corrupts, but we need electricity.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (2)
As of 2024-04-26 00:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found