2013-02-26 19 views
5

Sto cercando di usare regex python su una stringa URL.regex Python - differenza tra ricerca e trova tutto

id= 'edu.vt.lib.scholar:http/ejournals/VALib/v48_n4/newsome.html' 
>>> re.search('news|ejournals|theses',id).group() 
'ejournals' 
>>> re.findall('news|ejournals|theses',id) 
['ejournals', 'news'] 

Sulla base dei documenti a http://docs.python.org/2/library/re.html#finding-all-adverbs, si dice di ricerca() corrisponde al primo e trovare tutte le partite tutte le possibili quelli nella stringa.

Mi chiedo perché "news" non viene catturato con la ricerca anche se è dichiarato per primo nel pattern.

Ho usato il modello sbagliato? Voglio cercare se una qualsiasi di quelle parole chiave si verifica nella stringa.

risposta

1

Stai pensando al contrario. La regex passa attraverso la stringa di destinazione in cerca di "news" O "ejournals" O "theses" e restituisce il primo che trova. In questo caso, "ejournals" viene visualizzato per primo nella stringa di destinazione.

+0

Grazie. Mio male, non ci ho pensato. – kich

2

La funzione re.search() si interrompe dopo la prima occorrenza che soddisfa la condizione, non la prima opzione nel motivo.