Perl: Regex Tutorial
Check If String Match
To check if a string matches a pattern, do str =~ m/regex_pattern/flags
. Any captured pattern will be in predefined variable {$1
, $2
, …}.
#-*- coding: utf-8 -*- # perl # simple example of finding email address $text = 'this xyz@example.com that'; if ( $text =~ m/ (\w+\@\w+\.com) / ) { print "$1"; # xyz@example.com } else { print "no"; }
Find and Replace
To find and replace, do str =~ m/regex_pattern/replace/flags
. Any captured pattern will be in predefined variable {$1
, $2
, …}
Here's a simple example of using regex to replace text.
#-*- coding: utf-8 -*- # perl $text = "123123"; $text =~ s/2/8/g; # g is a flag for global. meaning replace all occurrences print $text; # 183183
Here's a more complex example, replacing all “gif” image paths to “png” in HTML file.
# -*- coding: utf-8 -*- # perl $myText = qq[<p><img src="./rabbits.gif" width="30" height="20"> and <img class="xyz" src="../cats.gif">, but <img src ="tigers.gif">, <img src= "bird.gif">!</p>]; $myText =~ s/src\s*=\s*"([^"]+)\.gif"/src="\1.png"/g; # replacement on $myText print $myText; __END__ prints <p><img src="./rabbits.png" width="30" height="20"> and <img class="xyz" src="../cats.png">, but <img src="tigers.png">, <img src="bird.png">!</p>