Nota: Examples provided are in Python.
sebbene il concetto rimanga lo stesso.
'.'
è un simbolo corrispondente che corrisponde a qualsiasi carattere ad eccezione del carattere di nuova riga (anche questo può essere sostituito con re.DOTALL
argomento in Python). Quindi viene anche chiamato Wildcard .
'*'
è un quantificatore (definisce la frequenza con cui un elemento può verificarsi). È l'abbreviazione di {0,} .
Significa "corrisponde a zero o più": il gruppo che precede la stella può verificarsi un numero qualsiasi di volte nel testo. Può essere completamente assente o ripetuto più volte.
'?'
è anche un quantificatore . È l'abbreviazione di {0,1} .
Significa "Match zero o uno del gruppo che precede questo punto interrogativo". Può anche essere interpretato come la parte che precede il punto interrogativo è facoltativa .
per esempio:
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'
Nell'esempio sopra "?" indica che le due cifre che la precedono sono opzionali e potrebbero non verificarsi o verificarsi al massimo una volta.
Differenza fra '.' e '?':
'.'
corrisponde / accetta / verifica ogni singolo carattere per il posto che sta nell'espressione regolare.
per esempio:
pattern = re.compile(r'.ot')
pattern.findall('dot will identify both hot and got.')
Output: ['dot', 'hot', 'got']
'?'
confronta / verifica lo zero o la singola occorrenza del gruppo che lo precede .
Controlla l'esempio del numero di cellulare.
Lo stesso vale per '*'
. Controllerà zero o più occorrenze del gruppo che lo precede .
Combinazione:
'.*'
: Accetta tutte le sequenze disponibili. Approccio avido .
'.*?
'Accetta la prima sequenza abbinata e si ferma. Approccio non avido
Per maggiori informazioni, considera di leggere le seguenti due domande ...