2011-09-30 22 views
28

Sto provando un sacco di tempo a trasferire la mia esperienza con regex javascript su Python.Python regex string matching?

Sto solo cercando di arrivare a questo lavoro:

print(re.match('e','test')) 

... ma esso stampa Nessuno. Se lo faccio:

print(re.match('e','est')) 

Corrisponde a ... corrisponde per impostazione predefinita all'inizio della stringa? Quando corrisponde, come posso usare il risultato?

Come si effettua la prima corrispondenza? C'è una documentazione migliore di quella offerta dal sito Python?

risposta

53

re.match aggiunge implicitamente ^ all'inizio della regex. In altre parole, corrisponde solo all'inizio della stringa.

re.search riproverà in tutte le posizioni.

In generale, si consiglia di utilizzare re.search e di aggiungere ^ esplicitamente quando lo si desidera.

http://docs.python.org/library/re.html

+1

Comportamento sottile. –

9

la documentazione è chiaro credo.

re.match (pattern, string [, flags]) ¶

If zero or more characters **at the beginning of string** match the 

modello di espressione regolare, restituiscono un corrispondente MatchObject esempio. Restituisce None se la stringa non corrisponde al pattern; nota che è diverso da una corrispondenza di lunghezza zero.