regular expressions software tools. slide 2 what is a regular expression? a regular expression is a...
Post on 18-Dec-2015
224 views
TRANSCRIPT
![Page 1: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/1.jpg)
Regular Expressions
Software Tools
![Page 2: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/2.jpg)
Slide 2
What is a Regular Expression?
A regular expression is a pattern to be matched against a string. For example, the pattern Bill.
Matching either succeeds or fails. Sometimes you may want to replace a matched
pattern with another string. Regular expressions are used by many other Unix
commands and programs, such as grep, sed, awk, vi, emacs, and even some shells.
![Page 3: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/3.jpg)
Slide 3
Simple Uses of Regular Expressions
If we are looking for all the lines in a file that contain the string Shakespeare, we could use the grep command:
$ grep Shakespeare movie > result
Here, Shakespeare is the regular expression that grep looks for in the file movie.
Lines that match are redirected to result.
![Page 4: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/4.jpg)
Slide 4
Simple Uses of Regular Expressions
In Perl, we can make Shakespeare a regular expression by enclosing it in slashes:
if(/Shakespeare/){print $_;
}
What is tested in the if-statement?
Answer: $_. When a regular expression is enclosed in slashes, $_ is tested against the regular expression, returning true if there is a match, false otherwise.
![Page 5: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/5.jpg)
Slide 5
Simple Uses of Regular Expressions
if(/Shakespeare/){print $_;
}
The previous example tests only one line, and prints out the line if it contains Shakespeare.
To work on all lines, add a loop:
while(<>){if(/Shakespeare/){
print;}
}
![Page 6: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/6.jpg)
Slide 6
Simple Uses of Regular Expressions
What if we are not sure how to spell Shakespeare? Certainly the first part is easy Shak, and there must
be a r near the end. How can we express our idea?
grep: grep "Shak.*r" movie > result
Perl: while(<>){if(/Shak.*r/){
print;}
}
.* means “zero or more of any character”.
![Page 7: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/7.jpg)
Slide 7
Simple Uses of Regular Expressions
grep: grep "Shak.*r" movie > result
The double quotes in this grep example are needed to prevent the shell from interpreting * as “all files”.
Since Shakespeare ends in “e”, shouldn’t it be: Shak.*r.*
Answer: No need. Any character can come before or after the pattern.
Shak.*r is the same as .*Shak.*r.*
![Page 8: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/8.jpg)
Slide 8
Substitution
Another simple regular expression is the substitute operator.
It replaces part of a string that matches the regular expression with another string.
s/Shakespeare/Bill Gates/; $_ is matched against the regular expression
(Shakespeare). If the match is successful, the part of the string that
matched is discarded and replaced by the replacement string (Bill Gates).
If the match is unsuccessful, nothing happens.
![Page 9: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/9.jpg)
Slide 9
Substitution
The program:$ cat movieTitanicSaving Private RyanShakespeare in LoveLife is Beautiful$ cat sub1#!/usr/local/bin/perl5 -wwhile(<>){
if(/Shakespeare/){s/Shakespeare/Bill Gates/;print;
}}$ sub1 movieBill Gates in Love$
![Page 10: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/10.jpg)
Slide 10
Substitution
An even shorter way to write it:
$ cat sub2#!/usr/local/bin/perl5 -wwhile(<>){
if(s/Shakespeare/Bill Gates/){print;
}}$ sub2 movieBill Gates in Love$
![Page 11: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/11.jpg)
Slide 11
Patterns
A regular expression is a pattern.
Some parts of the pattern match a single character (a).
Other parts of the pattern match multiple characters (.*).
![Page 12: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/12.jpg)
Slide 12
Single-Character Patterns
The dot “.” matches any single character except the newline (\n).
For example, the pattern /a./ matches any two-letter sequence that starts with a and is not “a\n”.
Use \. if you really want to match the period.$ cat testhihi bob.$ cat sub3#!/usr/local/bin/perl5 -wwhile(<>){
if(/\./){ print; }}$ sub3 testhi bob.$
![Page 13: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/13.jpg)
Slide 13
Single-Character Groups
If you want to specify one out of a group of characters to match use [ ]:
/[abcde]/
This matches a string containing any one of the first 5 lowercase letters, while:
/[aeiouAEIOU]/
matches any of the 5 vowels in either upper or lower case.
![Page 14: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/14.jpg)
Slide 14
Single-Character Groups
If you want ] in the group, put a backslash before it, or put it as the first character in the list:/[abcde]]/ # matches [abcde] + ]/[abcde\]]/ # okay/[]abcde]/ # also okay
Use - for ranges of characters (like a through z):/[0123456789]/ # any single digit /[0-9]/# same
If you want - in the list, put a backslash before it, or put it at the beginning/end:/[X-Z]/ # matches X, Y, Z/[X\-Z]/ # matches X, -, Z/[XZ-]/ # matches X, Z, -/[-XZ]/ # matches -, X, Z
![Page 15: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/15.jpg)
Slide 15
Single-Character Groups
More range examples:/[0-9\-]/ # match 0-9, or minus
/[0-9a-z]/ # match any digit or lowercase letter
/[a-zA-Z0-9_]/ # match any letter, digit, underscore
There is also a negated character group, which starts with a ^ immediately after the left bracket. This matches any single character not in the list.
/[^0123456789]/ # match any single non-digit/[^0-9]/ # same
/[^aeiouAEIOU]/ # match any single non-vowel
/[^\^]/ # match any single character except ^
![Page 16: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/16.jpg)
Slide 16
For convenience, some common character groups are predefined:
Predefined Group Negated Negated Group\d (a digit) [0-9] \D (non-digit) [^0-9]
\w (word char) [a-zA-Z0-9_] \W (non-word) [^a-zA-Z0-9_]
\s (space char)[ \t\n] \S (non-space) [^ \t\n]
\d matches any digit \w matches any letter, digit, underscore \s matches any space, tab, newline
You can use these predefined groups in other groups:/[\da-fA-F]/ # match any hexadecimal digit
Single-Character Groups
![Page 17: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/17.jpg)
Slide 17
Multipliers
Multipliers allows you to say “one or more of these” or “up to four” of these.”
* means zero or more of the immediately previous character (or character group).
+ means one or more of the immediately previous character (or character group).
? means zero or one of the immediately previous character (or character group).
![Page 18: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/18.jpg)
Slide 18
Multipliers
Example:/Ga+te?s/
matches a G followed by one or more a’s followed by t, followed by an optional e, followed by s.
*, +, and ? are greedy, and will match as many characters as possible:
$_ = "Bill xxxxxxxxx Gates";
s/x+/Cheap/; # gives: Bill Cheap Gates
![Page 19: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/19.jpg)
Slide 19
General Multiplier
How do you say “five to ten x’s”?/xxxxxx?x?x?x?x?/ # works, but ugly
/x{5,10}/ # nicer
How do you say “five or more x’s”?/x{5,}/
How do you say “exactly five x’s”?/x{5}/
How do you say “up to five x’s”?/x{0,5}/
![Page 20: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/20.jpg)
Slide 20
General Multiplier
How do you say “c followed by any 5 characters (which can be different) and ending with d”?
/c.{5}d/
* is the same as {0,} + is the same as {1,} ? is the same as {0,1}
![Page 21: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/21.jpg)
Slide 21
Pattern Memory
How would we match a pattern that starts and ends with the same letter or word?
For this, we need to remember the pattern. Use ( ) around any pattern to put that part of
the string into memory (it has no effect on the pattern itself).
To recall memory, include a backslash followed by an integer.
/Bill(.)Gates\1/
![Page 22: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/22.jpg)
Slide 22
Pattern Memory
Example:/Bill(.)Gates\1/
This example matches a string starting with Bill, followed by any single non-newline character, followed by Gates, followed by that same single character.
So, it matches:Bill!Gates! Bill-Gates-
but not:Bill?Gates! Bill-Gates_
(Note that /Bill.Gates./ would match all four)
![Page 23: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/23.jpg)
Slide 23
Pattern Memory
More examples:
/a(.)b(.)c\2d\1/
This example matches a string starting with a, a character (#1), followed by b, another single character (#2), c, the character #2, d, and the character #1.
So it matches: a-b!c!d-.
![Page 24: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/24.jpg)
Slide 24
Pattern Memory
The reference part can have more than a single character.
For example:/a(.*)b\1c/
This example matches an a, followed by any number of characters (even zero), followed by b, followed by the same sequence of characters, followed by c.
So it matches: aBillbBillc and abc, but not: aBillbBillGatesc.
![Page 25: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/25.jpg)
Slide 25
Alteration
How about picking from a set of alternatives when there is more than one character in the patterns.
The following example matches either Gates or Clinton or Shakespeare:
/Gates|Clinton|Shakespeare/
For single character alternatives, /[abc]/
is the same as /a|b|c/.
![Page 26: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/26.jpg)
Slide 26
Anchoring Patterns Anchors requires that the pattern be at the beginning or end
of the line. ^ matches the beginning of the line (only if ^ is the first
character of the pattern): /^Bill/ # match lines that begin with Bill /^Gates/ # match lines that begin with Gates /Bill\^/ # match lines containing Bill^ somewhere/\^/ # match lines containing ^
$ matches the end of the line (only if $ is the last character of the pattern):
/Bill$/ # match lines that end with Bill /Gates$/ # match lines that end with Gates /$Bill/ # match with contents of scalar $Bill/\$/ # match lines containing $
![Page 27: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/27.jpg)
Slide 27
So what happens with the pattern: a|b* Is this (a|b)* or
a|(b*) ? Precedence of patterns from highest to lowest:
Name Representation
Parentheses ( )
Multipliers ? + * {m,n}
Sequence & anchoring abc ^ $
Alternation |
By the table, * has higher precedence than |, so it is interpreted as a|(b*).
Precedence
![Page 28: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/28.jpg)
Slide 28
Precedence
What if we want the other interpretation in the previous example?
Answer: Simple, just use parentheses: (a|b)* Use parentheses in ambiguous cases to
improve clarity, even if not strictly needed. When you use parentheses for precedence,
they also go into memory (\1, \2, \3).
![Page 29: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/29.jpg)
Slide 29
Precedence
More precedence examples:abc* # matches ab, abc, abcc, abccc,…
(abc)* # matches "", abc, abcabc, abcabcabc,…
^a|b # matches a at beginning of line, or b anywhere
^(a|b) # matches either a or b at the beginning of line
a|bc|d # a, or bc, or d
(a|b)(c|d) # ac, ad, bc, or bd
(Bill Gates)|(Bill Clinton) # Bill Gates, Bill Clinton
Bill (Gates|Clinton) # Bill Gates, Bill Clinton
(Mr\. Bill)|(Bill (Gates|Clinton))
# Mr. Bill, Bill Gates, Bill Clinton
(Mr\. )?Bill( Gates| Clinton)?
# Bill, Mr. Bill, Bill Gates, Bill Clinton,
# Mr. Bill Gates, Mr. Bill Clinton
![Page 30: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/30.jpg)
Slide 30
=~
What if you want to match a different variable than $_?
Answer: Use =~. Examples:
$name = "Bill Shakespeare";
$name =~ /^Bill/; # true
$name =~ /(.)\1/; # also true (matches ll)
if($name =~ /(.)\1/){
print "$name\n";
}
![Page 31: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/31.jpg)
Slide 31
=~
An example using =~ to match <STDIN>:$ cat match1
#!/usr/local/bin/perl5 -w
print "Quit (y/n)? ";
if(<STDIN> =~ /^[yY]/){
print "Quitting\n";
exit;
}
print "Continuing\n";
$ match1
Quit (y/n)? y
Quitting
$
![Page 32: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/32.jpg)
Slide 32
=~
Another example using =~ to match <STDIN>:$ cat match2#!/usr/local/bin/perl5 -wprint "Wakeup (y/n)? ";while(<STDIN> =~ /^[nN]/){print "Sleeping\n";print "Wakeup (y/n)? ";}$ match2Wakeup (y/n)? nSleepingWakeup (y/n)? NSleepingWakeup (y/n)? y$
![Page 33: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/33.jpg)
Slide 33
Ignoring Case In the previous examples, we used [yY] and [nN] to
match either upper or lower case. Perl has an “ignore case” option for pattern matching: /somepattern/i
$ cat match1a#!/usr/local/bin/perl5 -wprint "Quit (y/n)? ";if(<STDIN> =~ /^y/i){
print "Quitting\n";exit;
}print "Continuing\n";$ match1aQuit (y/n)? YQuitting$
![Page 34: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/34.jpg)
Slide 34
Slash and Backslash If your pattern has a slash character (/), you must
precede each with a backslash (\):$ cat slash1
#!/usr/local/bin/perl5 -w
print "Enter path: ";
$path = <STDIN>;
if($path =~ /^\/usr\/local\/bin/){
print "Path is /usr/local/bin\n";
}
$ slash1
Enter path: /usr/local/bin
Path is /usr/local/bin
$
![Page 35: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/35.jpg)
Slide 35
Different Pattern Delimiters If your pattern has lots of slash characters (/), you can also
use a different pattern delimiter with the form: m#somepattern#
The # can be any non-alphanumeric character.$ cat slash1a#!/usr/local/bin/perl5 -wprint "Enter path: ";$path = <STDIN>;if($path =~ m#^/usr/local/bin#){
# if($path =~ m@^/usr/local/bin@){ # also worksprint "Path is /usr/local/bin\n";
}$ slash1aEnter path: /usr/local/binPath is /usr/local/bin$
![Page 36: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/36.jpg)
Slide 36
Special Read-Only Variables
After a successful pattern match, the variables $1, $2, $3,… are set to the same values as \1, \2, \3,…
You can use $1, $2, $3,… later in your program. $ cat read1
#!/usr/local/bin/perl5 -w
$_ = "Bill Shakespeare in Love";
/(\w+)\W+(\w+)/; # match first two words
# $1 is now "Bill" and $2 is now "Shakespeare"
print "The first name of $2 is $1\n";
$ read1
The first name of Shakespeare is Bill
![Page 37: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/37.jpg)
Slide 37
Special Read-Only Variables
You can also use $1, $2, $3,… by placing the match in a list context:
$ cat read2
#!/usr/local/bin/perl5 -w
$_ = "Bill Shakespeare in Love";
($first, $last) = /(\w+)\W+(\w+)/;
print "The first name of $last is $first\n";
$ read2
The first name of Shakespeare is Bill
![Page 38: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/38.jpg)
Slide 38
Special Read-Only Variables Other read-only variables:
$& is the part of the string that matched the pattern. $` is the part of the string before the match $’ is the part of the string after the match
$ cat read3#!/usr/local/bin/perl5 -w$_ = "Bill Shakespeare in Love";/ in /; print "Before: $`\n";print "Match: $&\n";print "After: $'\n";$ read3Before: Bill ShakespeareMatch: in After: Love
![Page 39: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/39.jpg)
Slide 39
More on Substitution If you want to replace all matches instead of just the first match, use
the g option for substitution:
$ cat sub3#!/usr/local/bin/perl5 -w$_ = "Bill Shakespeare in love with Bill Gates";s/Bill/William/; print "Sub1: $_\n";$_ = "Bill Shakespeare in love with Bill Gates";s/Bill/William/g; print "Sub2: $_\n";$ sub3Sub1: William Shakespeare in love with Bill GatesSub2: William Shakespeare in love with William Gates$
![Page 40: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/40.jpg)
Slide 40
More on Substitution You can use variable interpolation in substitutions:
$ cat sub4#!/usr/local/bin/perl5 -w$find = "Bill";$replace = "William";$_ = "Bill Shakespeare in love with Bill Gates";s/$find/$replace/g; print "$_\n";$ sub4William Shakespeare in love with William Gates$
![Page 41: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/41.jpg)
Slide 41
More on Substitution Pattern characters in the regular expression allows
patterns to be matched, not just fixed characters:
$ cat sub5#!/usr/local/bin/perl5 -w$_ = "Bill Shakespeare in love with Bill Gates";s/(\w+)/<$1>/g; print "$_\n";$ sub5<Bill> <Shakespeare> <in> <love> <with> <Bill> <Gates>$
![Page 42: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/42.jpg)
Slide 42
More on Substitution Substitution also allows you to:
ignore case use alternate delimiters use =~
$ cat sub6#!/usr/local/bin/perl5 -w$line = "Bill Shakespeare in love with bill Gates";$line =~ s#bill#William#gi; $line =~ s@Shakespeare@Gates@gi; print "$line\n";$ sub6William Gates in love with William Gates$
![Page 43: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/43.jpg)
Slide 43
split The split function allows you to break a string into fields. split takes a regular expression and a string, and breaks up
the line wherever the pattern occurs.
$ cat split1#!/usr/local/bin/perl5 -w$line = "Bill Shakespeare in love with Bill Gates";@fields = split(/ /,$line);# split $line using space as delimiterprint "$fields[0] $fields[3] $fields[6]\n";$ split1Bill love Gates$
![Page 44: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/44.jpg)
Slide 44
split You can use $_ with split. split defaults to look for space delimiters.
$ cat split2#!/usr/local/bin/perl5 -w$_ = "Bill Shakespeare in love with Bill Gates";@fields = split;# split $_ using space (default) as delimiterprint "$fields[0] $fields[3] $fields[6]\n";$ split2Bill love Gates$
![Page 45: Regular Expressions Software Tools. Slide 2 What is a Regular Expression? A regular expression is a pattern to be matched against a string. For example,](https://reader034.vdocuments.mx/reader034/viewer/2022051415/56649d245503460f949fafc3/html5/thumbnails/45.jpg)
Slide 45
join The join function allows you to glue strings in a list together.
$ cat join1#!/usr/local/bin/perl5 -w@list = qw(Bill Shakespeare dislikes Bill Gates);$line = join(" ", @list);print "$line\n";$ join1Bill Shakespeare dislikes Bill Gates $
Note that the glue string is not a regular expression, just a normal string.