Regular Expression Grabbag
We have found these regular expressions useful or interesting.
- Roman numbers
m/^m*(d?c{0,3}|c[dm])(l?x{0,3}|x[lc])(v?i{0,3}|i[vx])$/i
- Swap first two words
s/(\S+)(\s+)(\S+)/$3$2$1/
- Keyword = Value
m/(\w+)\s*=\s*(.*?)\s*$/ # keyword is $1, value is $2
- Line of at least 80 characters
m/.{80,}/
- MM/DD/YY HH:MM:SS
m|(\d+)/(\d+)/(\d+) (\d+):(\d+):(\d+)|
- Changing directories
s(/usr/bin)(/usr/local/bin)g
- Expanding %7E (hex) escapes
s/%([0-9A-Fa-f][0-9A-Fa-f])/chr hex $1/ge
- Deleting C comments (imperfectly)
s{ /\* # Match the opening delimiter .*? # Match a minimal number of characters \*/ # Match the closing delimiter } []gsx;
- Removing leading and trailing whitespace
s/^\s+//; s/\s+$//;
- Turning \ followed by n into a real newline
s/\\n/\n/g;
- Removing package portion of fully qualified symbols
s/^.*:://
- Dotted quads (most IP addresses)
# XXX: fails on legal IPs 127.1 and 2130706433. m{ ^ ( \d | [01]?\d\d | 2[0-4]\d | 25[0-5] ) \˙ ( \d | [01]?\d\d | 2[0-4]\d | 25[0-5] ) \˙ ( \d | [01]?\d\d | 2[0-4]\d | 25[0-5] ) \˙ ( \d | [01]?\d\d | 2[0-4]\d | 25[0-5] ) $ }x
- Removing leading path from filename
s(^.*/)()
- Extracting columns setting from TERMCAP
$cols = ( ($ENV{TERMCAP} || " ") =~ m/:co#(\d+):/ ) ? $1 : 80;
- Removing directory components from program name and arguments
($name = " $0 @ARGV") =~ s, /\S+/, ,g;
- Checking your operating system
die "This isn't Linux" unless $^O =~ m/linux/i;
- Joining continuation lines in multiline string
s/\n\s+/ /g
- Extracting all numbers from a string
Get Perl Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.