Perl regular expression examples |
Here are some examples of Perl regular expressions.
Regular Expression Description Example Note that all the if statements return a TRUE value
. Matches an arbitrary character, but not a newline.
$string1 = Hello World ; if ($string1 =~ m/...../) { print $string1 has length >= 5 ; }
( ) Groups a series of pattern elements to a single element. When you match a pattern within parentheses, you can use any of $1, $2, ... later to refer to the previously matched pattern.
$string1 = Hello World ; if ($string1 =~ m/(H..).(o..)/) { print We matched $1 and $2 ; }
Output: We matched Hel and o W ;
+ Matches the preceding pattern element one or more times.
$string1 = Hello World ; if ($string1 =~ m/l+/) { print There are one or more consecutive ls in $string1 ; } Output: There are one or more consecutive ls in Hello World
Matches zero or one times.
$string1 = Hello World ; if ($string1 =~ m/H.e/) { print There is an H and a e separated by ; print 0-1 characters (Ex: He Hoe) ; }
Modifies the *, +, or {M,N} d regexp that comes before to match as few times as possible.
$string1 = Hello World ; if ($string1 =~ m/(l.+o)/) { print The non-greedy match with l followed by one or ; print more characters is llo rather than llo wo . ; }
* Matches zero or more times.
$string1 = Hello World ; if ($string =~ m/el*o/) { print There is an e followed by zero to many ; print l followed by o (eo, elo, ello, elllo) ; }
{M,N} Denotes the minimum M and the maximum N match count.
$string1 = Hello World ; if ($string1 =~ m/l{1,2}/) { print There exists a substring with at least 1 ; print and at most 2 l s in $string1 ; }
[...] Denotes a set of possible character matches.
$string1 = Hello World ; if ($string1 =~ m/[aeiou]+/) { print $string1 contains one or more vowels. ; }
| Separates alternate possibilities.
$string1 = Hello World ; if ($string1 =~ m/(Hello|Hi|Pogo)/) { print At least one of Hello, Hi, or Pogo is ; print contained in $string1. ; }
Matches a word boundary.
$string1 = Hello World ; if ($string1 =~ m/llo/) { print There is a word that ends with llo ; } else { print There are no words that end with llo ; }
w Matches alphanumeric, including _ .
$string1 = Hello World ; if ($string1 =~ m/w/) { print There is at least one alphanumeric ; print character in $string1 (A-Z, a-z, 0-9, _) ; }
W Matches a non-alphanumeric character.
$string1 = Hello World ; if ($string1 =~ m/W/) { print The space between Hello and ; print World is not alphanumeric ; }
s Matches a whitespace character (space, tab, newline, form feed)
$string1 = Hello World ; if ($string1 =~ m/s.*s/) { print There are TWO whitespace characters, which may ; print be separated by other characters, in $string1 ; }
S Matches anything BUT a whitespace.
$string1 = Hello World ; if ($string1 =~ m/S.*S/) { print There are TWO non-whitespace characters, which ; print may be separated by other characters, in $string1 ; }
d Matches a digit, same as [0-9].
$string1 = 99 bottles of beer on the wall. ; if ($string1 =~ m/(d+)/) { print $1 is the first number in $string1 ; }
Output: 99 is the first number in 99 bottles of beer on the wall.
D Matches a non-digit.
$string1 = Hello World ; if ($string1 =~ m/D/) { print There is at least one character in $string1 ; print that is not a digit. ; }
^ Matches the beginning of a line or string.
$string1 = Hello World ; if ($string1 =~ m/^He/) { print $string1 starts with the characters He ; }
$ Matches the end of a line or string.
$string1 = Hello World ; if ($string1 =~ m/rld$/) { print $string1 is a line or string ; print that ends with rld ; }
A Matches the beginning of a string (but not an internal line).
$string1 = Hello World ; if ($string1 =~ m/AH/) { print $string1 is a string ; print that starts with H ; }
Matches the end of a string (but not an internal line).
$string1 = Hello World ; if ($string1 =~ m/d /) { print $string1 is a string ; print that ends with d\n ; }
[^...] Matches every character except the ones inside brackets.
$string1 = Hello World ; if ($string1 =~ m/[^abc]/) { print $string1 does not contain the characters ; print a, b, and c ; }
The m in the above regular expressions, for example m/[^abc]/, is not required in order for perl to recognize the expression as a match (cf. substitute : s/a/b/); /[^abc]/ could just as easily be used without the preceding m . The m operator can be used to alter the delimiting character; for example, m{/} may be used to enhance the legibility of patterns such as ///. See [http://www.perldoc.com/perl5.8.4/pod/perlre.html perldoc perlre] for more details.|
|