2012-07-02 23 views
29

versuchen, einen regulären Ausdruck zu schreiben, die alle Musterpython regex ersten/kürzeste Spiel

p = "q=http://.*\.doc" in 

text = "q=http://11111.doc,q=http://22222.doc" 

finden, wenn ich auf Text finall tat,

ich das Ganze bekommen, das heißt q=http://11111.doc,q=http://22222.doc

aber nicht q=http://11111.doc und q=http://22222.doc

wie repariere ich es?

Antwort

61

Das ist, weil * ein gieriger Quantifizierer ist und versucht, so viel wie möglich zu vergleichen. Machen Sie es *?:

q=http://.*?\.doc 

Weitere Informationen finden Sie im Regular Expression HOWTO finden: Greedy versus Non-greedy