Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python regex first/shortest match

Tags:

python

regex

trying to write an regex that can find all patterns

p = "q=http://.*\.doc" in   text = "q=http://11111.doc,q=http://22222.doc" 

when I did finall on text,

I get the whole thing, i.e. q=http://11111.doc,q=http://22222.doc

but not q=http://11111.doc and q=http://22222.doc

how do I fix it?

like image 549
cheng Avatar asked Jul 02 '12 21:07

cheng


1 Answers

That's because * is a greedy quantifier, trying to match as much as it can. Make it *?:

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

More information can be found in the Regular Expression HOWTO: Greedy versus Non-greedy

like image 182
Joey Avatar answered Oct 14 '22 14:10

Joey