metacharacter(s) ;; the metacharacters column specifies the regex syntax being demonstrated =~ m// ;; indicates a regex match operation in perl =~ s/// ;; indicates a regex substitution operation in perl
Metacharacter(s) | Description | Example Note that all the if statements return a TRUE value |
---|
. | Normally matches any character except a newline. Within square brackets the dot is literal. | $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 letter "l"'s in $string1
";} Output:There are one or more consecutive letter "l"'s in Hello World
|
? | Matches the preceding pattern element 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 beforeto 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 the preceding pattern element zero or more times. | $string1 = "Hello World
";if ($string1 =~ 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 an alphanumeric character, 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, excluding "_". | $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 contains a character other than "; print "a, b, and c
";}
|