Los metacaracteres se consideran los componentes básicos de las expresiones regulares. Las expresiones regulares son patrones que se utilizan para hacer coincidir las combinaciones de caracteres en las strings. Los metacaracteres tienen un significado especial en la búsqueda de patrones y se utilizan principalmente para definir los criterios de búsqueda y cualquier manipulación de texto.
Algunos de los metacaracteres más utilizados junto con sus usos son los siguientes:
Metapersonaje | Descripción | Ejemplo |
---|---|---|
\d | números enteros (0-9) (un solo dígito) | \d = 7, \d\d=77 |
\w | caracteres alfanuméricos |
\w\w\w\w = friki \w\w\w =! adicto |
* | 0 o más caracteres | s* = _,s,ss,sss,ssss….. |
+ | 1 o más caracteres | s+ = s,ss,sss,ssss….. |
? | 0 o 1 caracter | ¿s? = _ o s |
{metro} | ocurre “m” veces | sd{3} = sddd |
{Minnesota} | min “m” y max “n” veces | sd{2,3}=sdd o sddd |
\W | simbolos | \W = % |
[az] o [0-9] | conjunto de caracteres |
geek[sy] = geek geek[sy] != geek |
Las expresiones regulares se pueden construir mediante metacaracteres, y los patrones se pueden procesar usando una biblioteca en Python para expresiones regulares conocida como «re».
import re # used to import regular expressions
La biblioteca incorporada se puede utilizar para compilar patrones, buscar patrones , etc.
Ejemplo: en el siguiente código, generaremos todos los patrones basados en la expresión regular dada
Python3
import re ''' Meta characters - * - 0 or more + - 1 or more ? - 0 or 1 {m} - m times {m,n} - min m and max n ''' test_phrase = 'sddsd..sssddd...sdddsddd...dsds...dsssss...sdddd' test_patterns = [r'sd*', # s followed by zero or more d's r'sd+', # s followed by one or more d's r'sd?', # s followed by zero or one d's r'sd{3}', # s followed by three d's r'sd{2,3}', # s followed by two to three d's ] def multi_re_find(test_patterns, test_phrase): for pattern in test_patterns: compiledPattern = re.compile(pattern) print('finding {} in test_phrase'.format(pattern)) print(re.findall(compiledPattern, test_phrase)) multi_re_find(test_patterns, test_phrase)
Producción:
encontrar sd* en test_phrase
[‘sdd’, ‘sd’, ‘s’, ‘s’, ‘sddd’, ‘sddd’, ‘sddd’, ‘sd’, ‘s’, ‘s’, ‘s’, ‘s’, ‘s’, ‘s’, ‘sdddd’]
encontrando sd+ en test_phrase
[‘sdd’, ‘sd’, ‘sddd’, ‘sddd’, ‘sddd’, ‘sd’, ‘sdddd’]
encontrando ¿Dakota del Sur? en frase_de_prueba
[‘sd’, ‘sd’, ‘s’, ‘s’, ‘sd’, ‘sd’, ‘sd’, ‘sd’, ‘s’, ‘s’, ‘s’, ‘s’ , ‘s’, ‘s’, ‘sd’]
encontrando sd{3} en frase_de_prueba
[‘sddd’, ‘sddd’, ‘sddd’, ‘sddd’]
encontrando sd{2,3} en frase_de_prueba
[‘sdd’ , ‘sddd’, ‘sddd’, ‘sddd’, ‘sddd’]
Publicación traducida automáticamente
Artículo escrito por manavgoswami001 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA