Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: regex logical equivalence?

by Roger (Parson)
on Feb 04, 2004 at 10:38 UTC ( [id://326457]=note: print w/replies, xml ) Need Help??


in reply to regex logical equivalence?

The good thing about Perl regex is that you don't have to write the entire regex in one go, you can build it part by part programmatically. I often construct my regex in the maner as shown below to improve readability (at least to myself) and maintainability:
use strict; use warnings; # allowed prompt characters my $prompt_regex = '[>$%@~# ]'; # allowed characters in the prompt my $allowed_regex = '[\w@\-\.]*'; # a list of allowed prompt patterns my @patterns = ( '\[?' . $allowed_regex . $prompt_regex . '\]?', quotemeta '\\[\\e[0m\\] [0m', ); # build my regex dynamically my $regex = '(' . join('|',@patterns) .')\s?'; # test the regex print "regex: /$regex/\n\n"; while (<DATA>) { chomp; /$regex/ && printf "%-30smatched: %s\n", $_, $1; } __DATA__ roger@www.foo.com# blah roger@www.foo~ crap crap [roger@www#] blah blah foo [roger@www.foo~] crap crap \[\e[0m\] [0m foo bar

And the output -
regex: /(\[?[\w@\-\.]*[>$%@~# ]\]?|\\\[\\e\[0m\\\]\ \[0m)\s?/ roger@www.foo.com# blah matched: roger@www.foo.com# roger@www.foo~ crap crap matched: roger@www.foo~ [roger@www#] blah blah foo matched: [roger@www#] [roger@www.foo~] crap crap matched: [roger@www.foo~] \[\e[0m\] [0m foo bar matched: \[\e[0m\] [0m

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (2)
As of 2025-07-12 06:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.