Mi scuso per una domanda completamente nuova. Ho provato a cercare StackOverflow prima di pubblicare questa domanda.
Sto cercando di imparare regex utilizzando python da diveintopython3.net. Mentre giocherellare con gli esempi, non sono riuscito a capire una particolare uscita per una ricerca regex (vedi sotto):
>>> pattern = 'M?M?M?$'
>>> re.search(pattern,'MMMMmmmmm')
<_sre.SRE_Match object at 0x7f0aa8095168>
Perché il modello di espressione regolare sopra corrisponde al testo di input? La mia comprensione è che il carattere $ deve corrispondere solo alla fine della stringa. Ma il testo di input termina con 'mmmm'
. Quindi, anche se i modelli non dovrebbero corrispondere.
La mia versione pitone è:
Python 3.3.2 (default, Dec 4 2014, 12:49:00)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-7)] on linux
EDIT: In allegato uno screenshot da Debuggex.
Grazie @stribizhev. La demo di Debuggex per lo stesso modello e il testo di input mostra "Non corrisponde" per python. Ho allegato uno screenshot dello stesso nel post originale. Potresti aiutarmi a capire perché questo sta accadendo? –
È possibile spostare il cursore in qualsiasi posizione per verificare se la corrispondenza appare in quella stessa posizione. Poiché la partita è alla fine, il triangolo all'inizio di una stringa non mostra alcuna corrispondenza. È solo per il debug, per mostrare più interni di corrispondenza. –