Basics of Pattern Matching & Substitutions with Perl ...
Basics of Perl Regular Expressions (“regexp”)
Jon Radoff // jradoff@ // Biophysics 101, Fall 2002
Simplistic use of a regular expression:
$_ = "this is a test";
if(/est/)
{
print "Match!\n";
}
In the above code, the /est/ is the regular expression. It succeeds because est is a substring of this is a test. The string may also contain “meta-characters” that allow you to specify special rules about how you would like to match.
Meta-characters:
\ Quote the next metacharacter
^ Match the beginning of the line
. Match any character (except newline)
$ Match the end of the line (or before newline at the end)
| Alternation
() Grouping
[] Character class
The most common meta-character in regular expressions is . which matches anything. For example, if you used /te.t/ as the regular expression in the above code, it would succeed, because the s character counts as the “any character.” /foo|test/ would succeed because the | (read as “or”) finds anything that contains either foo or test. The [] operator let’s you check for any one of a class of characters. For example, if you wanted to see if a codon contained AGU or AGC you could use either /AG[UC]/ or /AGU|AGC/.
“Quantifiers” may be added to the regular expression to control how many of a certain character to look for.
Quantifiers:
* Match 0 or more times
+ Match 1 or more times
? Match 1 or 0 times
{n} Match exactly n times
{n,} Match at least n times
{n,m} Match at least n but not more than m times
Examples: /this.*test/ would succeed for any string containing with this and test separated by any number of arbitrary characters. /thi+s/ would succeed for a string containing th followed by one or more i characters followed by s.
Modifiers are appended to the end of a regular expression and apply special rules to your entire expression.
Modifiers:
i Do case-insensitive pattern matching.
g global (in substitutions, repeat substitution multiple times – see below)
m Treat string as multiple lines
s Treat string as single line; i.e., treat newlines as “dots”
x Allow whitespace and comments in your regular expression
Example: /[acgt]+/i checks if a string contains any number of valid DNA sequence characters of either case.
Using the caret (^) with character class
In practice, it is often useful to check if a string contains anything except the characters of a particular class. The example above will still return positive even if it contains invalid DNA sequence characters. Insert a character in the beginning of the class to tell it to return positive for any exceptions to the class.
Example: /[^acgt]+/i checks if a string contains anything except valid DNA sequence characters of either case.
Substitutions with s///
In addition to matching strings, you may also use regular expressions to perform substitutions. Do this by creating a regular expression that is prepended with s, and then append it with the string you want to replace with, followed by another /. Note that substitutions can be placed on a line of code by themselves (they do not need to be part of an assignment or a conditional statement).
Example:
$_ = "this will be a test";
s/will be/is/;
print "$_\n";
will output:
this is a test
By default, only the first one substitution is performed. To perform multiple, append the g modifier.
Example:
$_ = "Frodo Baggins and Bilbo Baggins are both hobbits.";
s/ baggins//gi;
print "$_\n";
will output:
Frodo and Bilbo are both hobbits.
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.