REGEX
Basic
form of regex:
$string
=~ /text_to_search_for/ #Returns
true
if text_to_search_for is found
$string !~ /text_to_search_for/ #Returns
true
if text_to_search_for is NOT found
The // can be replaced with any other
character by using the m option
$String =~ m!hello! #Returns
true
hello is found, the // has been replaced by !!
Metacharacters:
^ String begins with
example:
$string =~ /^first_text/
#True
if $string begins with first_text
$ String ends with
example:
$string =~ /last_text$/
#True
if $string ends with last_text
\n newline character
\t tab character
\. period character
\< left arrow character
\s white space character (space or
tab)
\w "word" character
(letter, digit, or underscore)
\d "digit" character (0-9)
\S NOT a white space character
(space or tab)
\W NOT a "word"
character (letter, digit, or underscore)
\D NOT a "digit" character (0-9)
.
any character
example:
$string =~ /f.t/
#True
if $string contains fit, fat fyt, f t
+ the preceding character 1 or more
times
example:
$string =~ /f+t/
#True
if $string has ft, fft fffft, but not fxt
*the preceding character 0 or more
times
example: $string =~ /f*t/
#True if $string contains ft, fft fffft, or xxxt
? the preceding character 0 or 1
times
example:
$string =~ /f?t/
#True
if $string contains ft, t, xt, but not fft
Fixed
number of repeats:
$phone
=~ /\d\d\d-\d\d\d\d/
is the same as
$phone
=~ /\d{3}-\d{4}/
\d{2,5}
will match two to five digits
\w{3,}
will match a word that's at least three characters long.
Multiple
conditions:
example:
$string =~ /^http:.+html$/
#True
if $string starts with http:
followed by one or more characters
and ends with html
Match
any in a set:
$string
=~ /[aeiou]/
#True if any vowel (aeiou) is found
$string
=~ /[a,d]/ #True if any letter a to d
is found
$string
=~ /[^aeiou]/ #True if NO vowel (aeiou) is
found
Upper
or lower case:
$string
=~ /bob/
#True if bob is
found,
but not BOB or Bob or boB
$string
=~ /bob/i
#True if bob or
BOB or Bob or boB
Search
for more than 1 item:
$string
=~ /idiot|dope|twit/ #True
if idiot or dope or twit is found
Returned
values:
if
($string =~ /b.b/) {$1 contains the matching text ie bob bib ...
if
any match found}
if ($string =~ /(b.b).+(w.w)/) {$1
contains the matching text ie bob
bib
... $2= wow or wlw...
if $string holds bob
anything wow}
Search
and replace:
$string
=~ s/search_text/replace_text/
#
if search_text is found in $string
replace it with replace_text