/url?q=http://it.wikipedia.org/wiki/Spider-Man_(膜)及SA = U&安培; EI = iavVUKuFGsrNswbz74GQBA&安培; VED = 0CBYQFjAA&安培; USG = AFQjCNEth5YspFPWp6CInyAfknlEvVgIfA
我需要得到
我试过\?q=(.*)&
但它考虑到&
的最后一次出现,所以我得到了
http://it.wikipedia.org/wiki/Spider-Man_(film)&sa=U&ei=iavVUKuFGsrNswbz74GQBA&ved=0CBYQFjAA
答案 0 :(得分:11)
您需要使用不情愿的匹配来匹配到第一个&
。使用贪婪匹配(即使用*
而不是*?
),您的模式将匹配尽可能长的字符串,以满足完整模式。
所以使用它: -
\?q=(.*?)&
或者你也可以使用带有否定&
的字符类,它匹配除&
之外的每个字符: -
\?q=([^&]*)
请注意,如果您不希望(.*?)
匹配空字符串,则应使用+
量词。它匹配1 or more
次出现。
答案 1 :(得分:2)
您只需要使*
运算符变得懒惰,然后在其后添加?
即可。所以它会是.*?
懒惰(或非贪婪)意味着在第一次出现该匹配后将停止,而不是最后一次。
答案 2 :(得分:1)
尝试:
\?q=([^&]+)
并捕获第一组。
答案 3 :(得分:0)
如果你的in python然后sub(r'(\/url\?q\=)|[&][\S]*','',url)
应该做你的工作