Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^2: what means this regex? $x = qr/[0-9a-f]{4|8}/

by kidongrok (Acolyte)
on Jun 09, 2006 at 14:32 UTC ( #554507=note: print w/replies, xml ) Need Help??


in reply to Re: what means this regex? $x = qr/[0-9a-f]{4|8}/
in thread what means this regex? $x = qr/[0-9a-f]{4|8}/

That was a poorly worded Q you responded to. To be clear, it was a muse, rather than write "4 or 8 hex chars" other longer ways. You saw a 2nd interpretation that I had dismissed:
  • Doing bitwize-or: {4|8} = {12}; gives only 1 match-length, which is already doable '{12}'
  • Doing match-length-alternation, insofar as it allows multiple lengths to be given, seems more useful.
    • Comment on Re^2: what means this regex? $x = qr/[0-9a-f]{4|8}/
  • Replies are listed 'Best First'.
    Re^3: what means this regex? $x = qr/[0-9a-f]{4|8}/
    by Zaxo (Archbishop) on Jun 09, 2006 at 14:47 UTC

      If alternation worked in quantifiers, you'd want to put the eight first. The regex engine may be greedy, but it's also hasty. As soon as it matches an alternate it forgets about the remaining ones. Anything that would match the eight has already matched the four.

      Translating to the intended regex,

      $_ = "abc" x 4; $re_short = qr/([0-9a-f]{4}|[0-9a-f]{8})/; $re_long = qr/([0-9a-f]{8}|[0-9a-f]{4})/; print $1, $/ if /$re_short/; print $1, $/ if /$re_long/; __END__ abca abcabcab

      After Compline,
      Zaxo

    Log In?
    Username:
    Password:

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

    How do I use this? | Other CB clients
    Other Users?
    Others about the Monastery: (None)
      As of 2021-10-20 01:55 GMT
      Sections?
      Information?
      Find Nodes?
      Leftovers?
        Voting Booth?
        My first memorable Perl project was:







        Results (78 votes). Check out past polls.

        Notices?