Nota: Examples provided are in Python.
Aunque el concepto sigue siendo el mismo.
'.'
es un símbolo coincidente que coincide con cualquier carácter excepto el carácter de nueva línea (esto también se puede anular con un re.DOTALL
argumento en Python). Por lo tanto, también se llama como comodín .
'*'
es un cuantificador (define con qué frecuencia puede ocurrir un elemento). Es la abreviatura de {0,} .
Significa "coincidencia cero o más": el grupo que precede a la estrella puede aparecer cualquier número de veces en el texto. Puede estar completamente ausente o repetirse una y otra vez.
'?'
También es un cuantificador . Es la abreviatura de {0,1} .
Significa "Hacer coincidir cero o uno del grupo que precede a este signo de interrogación". También se puede interpretar como la parte que precede al signo de interrogación es opcional .
p.ej:
pattern = re.compile(r'(\d{2}-)?\d{10}')
mobile1 = pattern.search('My number is 91-9999988888')
mobile1.group()
Output: '91-9999988888'
mobile2 = pattern.search('My number is 9999988888')
mobile2.group()
Output: '9999988888'
En el ejemplo anterior '?' indica que los dos dígitos que lo preceden son opcionales. Es posible que no aparezcan o que ocurran como máximo una vez.
Diferencia entre '.' y '?':
'.'
coincide / acepta / verifica cualquier carácter individual para el lugar que ocupa en la expresión regular.
p.ej:
pattern = re.compile(r'.ot')
pattern.findall('dot will identify both hot and got.')
Output: ['dot', 'hot', 'got']
'?'
coincide / verifica la ocurrencia cero o única del grupo que lo precede .
Verifique el ejemplo del número de móvil.
Lo mismo va con '*'
. Verificará cero o más ocurrencias del grupo que lo precede .
Combinación:
'.*'
: Acepta tantas secuencias como estén disponibles. Enfoque codicioso .
'.*?
'Acepta la primera secuencia coincidente y se detiene. Enfoque no codicioso
Para más información, considere leer las siguientes dos preguntas ...