perl | Clases de caracteres Regex

Las clases de caracteres se utilizan para hacer coincidir la string de caracteres. Estas clases permiten que el usuario coincida con cualquier rango de caracteres, que el usuario no conoce de antemano. Conjunto de caracteres que deben coincidir siempre se escribe entre corchetes [] . Una clase de personaje siempre coincidirá exactamente con un personaje. Si no se encuentra la coincidencia, falla toda la coincidencia de expresiones regulares.

Ejemplo:

Suponga que tiene muchas strings como #g# , #e# , #k# , #k# , #s# , #.# o #@# y tiene que hacer coincidir un carácter # seguido de ‘ g ‘, ‘ e ‘, ‘ k ‘, ‘ s ‘, ‘ . ‘, o ‘ @ ‘, seguido del otro carácter # , luego pruebe la expresión regular /[#geeks@.#]/ que coincidirá con la requerida. Comenzará una coincidencia con # y luego coincidirá con cualquier carácter en [] y luego coincidirá con otro #. Esta expresión regular no coincidirá con » ## » o » #ge# » o » #gg# «, etc. porque, como se dijo anteriormente, la clase de caracteres siempre coincide exactamente con un carácter entre los dos caracteres ‘ # ‘.

Puntos importantes:

  • El punto (.) dentro de la clase de caracteres perdió su significado especial, es decir, » todo excepto nueva línea «.
  • El punto (.) puede coincidir con un solo punto (.) solo dentro de una clase de carácter.
  • La mayoría de los caracteres especiales pierden su significado especial dentro de una clase de caracteres, pero hay algunos caracteres que tienen un significado especial dentro de una clase de caracteres.

Ejemplo:

# Perl program to demonstrate
# character class
   
# Actual String
$str = "#g#";
   
# Prints match found if 
# its found in $str
if ($str =~ /[#geeks@.#]/)
{
    print "Match Found\n";
}
   
# Prints match not found 
# if it is not found in $str
else
{
    print "Match Not Found\n";
}

Producción:

Match Found

Rango en la clase de caracteres: para hacer coincidir una larga lista de caracteres es muy difícil de escribir porque puede existir la posibilidad de que el usuario se salte uno o dos caracteres. Entonces, para facilitar la tarea, usaremos range. Generalmente, se usa un guión (-) para especificar el rango.

Ejemplo:

To specify range [abcdef] you can use /[a-f]/

Puntos importantes:

  • El rango se especifica mediante el símbolo -(Guión).
  • El usuario también puede combinar múltiples rangos de caracteres, dígitos, etc. como [0-9a-gA-g]. Aquí ‘ ‘ permite al usuario tomar cualquier número de caracteres o dígitos especificados en el rango
  • Si el usuario quiere hacer coincidir el guión (-) en una string determinada, simplemente puede ponerlo entre corchetes [] .
  • Para que coincida con un corchete de cierre en una string, simplemente preceda con \ ie \] y colóquelo entre los corchetes [] .

Ejemplo:

# Perl program to demonstrate
# range in character class
   
# Actual String
$str = "61geeks";
   
# Prints match found if 
# its found in $str
# using range
if ($str =~ /[0-7a-z]/) 
{
    print "Match Found\n";
}
   
# Prints match not found 
# if its not found in $str
else
{
    print "Match Not Found\n";
}

Producción:

Match Found

Clase de personaje negada: para negar una clase de personaje, simplemente use el símbolo de intercalación (^) . Negará el carácter especificado después del símbolo o incluso un rango. Si coloca un signo de intercalación (^) como primer carácter en la clase de caracteres, significa que la clase de caracteres puede coincidir con cualquier carácter, excepto los mencionados en la clase de caracteres.

Ejemplo:

# Perl program to demonstrate
# negated character class
   
# Actual String
$str = "geeks56";
   
# using negated character class
# Prints match found if 
# its found in $str
if ($str =~ /[^geeks0-7]/) 
{
    print "Match Found\n";
}
   
# Prints match not found 
# if its not found in $str
else
{
    print "Match Not Found\n";
}

Producción:

Match Not Found

Publicación traducida automáticamente

Artículo escrito por vaishali bhatia 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 *