pos() function in Perl is used to return the position of the last match using the ‘m’ modifier in Regex.
pos function can be used with the character classes in Regex to return a list of all the required substring positions in the given string. Global operator ‘g’ can also be used along with the ‘m’ modifier to search for the substring within the whole text.
Syntax: pos(String)
Parameter: String after applying Regular Expression
Returns: the position of the matched substring
Example 1: Using a substring character
Perl
#!/usr/bin/perl
$String = "Geeks For Geeks" ;
print " Position of 'G' in string:\n" ;
while ( $String =~ m/G/g)
{
$position = pos ( $String );
print "$position\n" ;
}
|
Output:
Position of 'G' in string:
1
11
Example 2: Using a character class
Perl
#!/usr/bin/perl
$String = "Geeks For Geeks" ;
print "Position of all Uppercase characters:\n" ;
while ( $String =~ m/[A-Z]/g)
{
$position = pos ( $String );
print "$position, " ;
}
print "\nPosition of all Lowercase characters:\n" ;
while ( $String =~ m/[a-z]/g)
{
$position = pos ( $String );
print "$position, " ;
}
|
Output:
Position of all Uppercase characters:
1, 7, 11,
Position of all Lowercase characters:
2, 3, 4, 5, 8, 9, 12, 13, 14, 15,
Example 3: Position of spaces
Perl
#!/usr/bin/perl
$String = "Geeks For Geeks" ;
while ( $String =~ m/\s/g)
{
$position = pos ( $String );
print "$position\n" ;
}
|
Use of \G Assertion to match from specified position:
\G Assertion in Perl Regex is used to match the substring starting from a position specified by pos() function till the matching character specified in the regex. This will return the position of the first occurrence of the character specified by the ‘m’ modifier.
Example:
Perl
#!/usr/bin/perl
$_ = "Geeks World is the best" ;
m/o/g;
$position = pos ();
m/\G(.*)/g;
print "$position $1" ;
|
Output:
8 rld is the best
In the above example, the position of the first occurrence of the matching substring is printed along with the remaining string. If there is a need to restart counting position for the next occurrence of the matching character, just store the remaining string that is in $1, into the default string.
Example:
Perl
#!/usr/bin/perl
$_ = "Geeks World is the best among all" ;
m/o/g;
$position = pos ();
m/\G(.*)/g;
print "$position $1\n" ;
$_ = $1;
m/o/g;
$position = pos ();
m/\G(.*)/g;
print "$position $1\n" ;
|
Output:
8 rld is the best among all
19 ng all
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!
Last Updated :
16 Jun, 2021
Like Article
Save Article