Perl | Operators in Regular Expression

Prerequisite: Perl | Regular Expressions

The Regular Expression is a string which is the combination of different characters that provides matching of the text strings. A regular expression can also be referred to as regex or regexp.
The basic method for applying a regular expression is to use of binding operators =~ (Regex Operator) and !~ (Negated Regex Operator).

There are three types of regular expression operators in Perl:



  1. Match Regular Expression
  2. Substitute (Search and replace) Regular Expression
  3. Global Character Transliteration Regular Expression

1) Pattern Matching or Match Regular Expression: The match operator “m//” is used to match a string or a statement against a regular expression. The forward slash used in the operator ( m// ) acts as the delimiter and this delimiter can also be like m{}, m(), and m><, etc. The expression is written in between two forward slashes used in the operator.

Syntax: m/PATTERN/

Here, PATTERN is the Regular Expression to be searched in the string
Let’s see some examples illustrating the pattern matching:
In the below examples, a string and regular expression is matched, on success it returns “match found” otherwise “match not found”.
Example 1:

filter_none

edit
close

play_arrow

link
brightness_4
code

#!/usr/bin/perl
  
# Initializing a string
$a = "GeeksforGeeks"
    
# matching the string and 
# a regular expression and returns
# match found or not
if ($a =~ m/for/)  
    print "Match Found\n"
else 
    print "Match Not Found\n"

chevron_right


Output:

Match Found

Example 2:

filter_none

edit
close

play_arrow

link
brightness_4
code

#!/usr/bin/perl
  
# Initialising an string
$a = "GeeksforGeeks"
  
# matching the string and 
# a regular expression and returns
# match found or not
if ($a =~ m:abc:) 
    print "Match Found\n"
else
    print "Match Not Found\n"

chevron_right


Output:

Match Not Found

Here, in the above code a different delimiter ‘:’ is used instead of ‘/’, this shows that it is not necessary to use ‘/’ as a delimiter.
 
2) Substitute (Search and replace) Regular Expression: The substitute operator “s///” is used to search a specific word and then replace it with a given regular expression. The forward slash used in the operator ( s/// ) acts as the delimiter.

Syntax: s/PATTERN/REPLACEMENT/;

Here PATTERN is the regular expression which is to be replaced with REPLACEMENT regular expression.

Let’s see some examples illustrating the substitute regular expression:
In the below examples, a PATTERN word is searched first then it is replaced with the REPLACEMENT word.
Example-1:



filter_none

edit
close

play_arrow

link
brightness_4
code

#/user/bin/perl
  
# Initialising a string
$string = "GeeksforGeeks is a computer science portal.";
  
# Calling the substitute regular expression
$string =~ s/GeeksforGeeks/gfg/;
$string =~ s/computer science/cs/;
  
# Printing the substituted string
print "$string\n";

chevron_right


Output:

gfg is a cs portal.

Example-2:

filter_none

edit
close

play_arrow

link
brightness_4
code

#/user/bin/perl
  
# Initialising a string
$string = "10001";
  
# Calling the substitution regular expression
$string =~ s/000/999/;
  
# Printing the substituted string
print "$string\n";

chevron_right


Output:

19991

 
3) Global Character Transliteration regular expression: The translation or transliteration operator “tr///” or “y///” is used to replace all the occurrences of a character with a given single character. The forward slash used in the operator ( tr/// and y/// ) acts as the delimiter.

Syntax:
tr/SEARCHLIST/REPLACEMENTLIST/
y/SEARCHLIST/REPLACEMENTLIST/

Here SEARCHLIST is the character whose all the occurrences are going to be replaced with the character in REPLACEMENTLIST.

Let’s see some examples illustrating the translation regular expression:
In the below examples, all occurrences of “G” are replaced with “g” with two different operators “tr///” and “y///“.
Example 1:

filter_none

edit
close

play_arrow

link
brightness_4
code

#/user/bin/perl
  
# Initialising a string
$string = 'GeeksforGeeks';
  
# Calling the tr/// operator
$string =~ tr/G/g/;
  
# Printing the replaced string
print "$string\n";

chevron_right


Output:

geeksforgeeks

Example 2:

filter_none

edit
close

play_arrow

link
brightness_4
code

#/user/bin/perl
  
# Initialising a string
$string = 'GeeksforGeeks';
  
# Calling the y/// operator
$string =~ y/G/g/;
  
# Printing the replaced string
print "$string\n";

chevron_right


Output:

geeksforgeeks


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.