perl | función pos() en expresión regular

La función pos() en Perl se usa para devolver la posición de la última coincidencia usando el modificador ‘m’ en Regex. 
La función pos se puede usar con las clases de caracteres en Regex para devolver una lista de todas las posiciones de substring requeridas en la string dada. El operador global ‘g’ también se puede usar junto con el modificador ‘m’ para buscar la substring dentro del texto completo.
 

Sintaxis: pos(String) 
Parámetro: String después de aplicar Expresión regular 
Devuelve: la posición de la substring coincidente 
 

Ejemplo 1: uso de un carácter de substring 
 

Perl

#!/usr/bin/perl
 
# Program to print position of a substring
$String = "Geeks For Geeks";
 
print" Position of 'G' in string:\n";
 
# Regex to search for substring
# using m modifier
while($String =~ m/G/g)
{
     
    # Finding the position of substring
    # using pos() function
    $position = pos($String);
    print "$position\n";
}
Producción: 

Position of 'G' in string:
1
11

 

 
Ejemplo 2: Uso de una clase de carácter 
 

Perl

#!/usr/bin/perl
 
# Program to print position of a substring
$String = "Geeks For Geeks";
 
print "Position of all Uppercase characters:\n";
 
# Regex to search for
# all the upper case characters
# using character class
while($String =~ m/[A-Z]/g)
{
     
    # Finding the position of substring
    # using pos() function
    $position = pos($String);
    print "$position, ";
}
 
print "\nPosition of all Lowercase characters:\n";
 
# Regex to search for
# all the lower case characters
# using character class
while($String =~ m/[a-z]/g)
{
     
    # Finding the position of substring
    # using pos() function
    $position = pos($String);
    print "$position, ";
}
Producción: 

Position of all Uppercase characters:
1, 7, 11, 
Position of all Lowercase characters:
2, 3, 4, 5, 8, 9, 12, 13, 14, 15,

 

 
Ejemplo 3: Posición de los espacios 
 

Perl

#!/usr/bin/perl
 
# Program to print position of a substring
$String = "Geeks For Geeks";
 
# Regex to search for
# all the spaces
while($String =~ m/\s/g)
{
     
    # Finding the position of substring
    # using pos() function
    $position = pos($String);
    print "$position\n";
}
Producción: 

6
10

 

  
Uso de \G Assertion para hacer coincidir desde la posición especificada:
\G Assertion en Perl Regex se usa para hacer coincidir la substring a partir de una posición especificada por la función pos() hasta el carácter coincidente especificado en la expresión regular. Esto devolverá la posición de la primera aparición del carácter especificado por el modificador ‘m’. 
Ejemplo: 
 

Perl

#!/usr/bin/perl
 
# Defining the default string
$_ = "Geeks World is the best";
 
# Terminating character
# using m modifier
m/o/g;
 
# Specifying the starting position
$position = pos();
 
# Using \G Assertion
m/\G(.*)/g;
 
# Printing the position
# and the remaining string
print "$position $1";
Producción: 

8 rld is the best

 

En el ejemplo anterior, la posición de la primera aparición de la substring coincidente se imprime junto con la string restante. Si es necesario reiniciar la posición de conteo para la próxima aparición del carácter coincidente, simplemente almacene la string restante que está en $1, en la string predeterminada.
Ejemplo: 
 

Perl

#!/usr/bin/perl
 
# Defining the default string
$_ = "Geeks World is the best among all";
 
# Terminating character
# using m modifier
m/o/g;
 
# Specifying the starting position
$position = pos();
 
# Using \G Assertion
m/\G(.*)/g;
 
# Printing the position
# and the remaining string
print "$position $1\n";
 
# To start counting from the matched character
# until the next possible match
$_ = $1;
m/o/g;
 
$position = pos();
 
# Using \G Assertion
m/\G(.*)/g;
 
# Printing the position
# and the remaining string
print "$position $1\n";
Producción: 

8 rld is the best among all
19 ng all

 

Publicación traducida automáticamente

Artículo escrito por Abhinav96 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *