/url?q=http://it.wikipedia.org/wiki/Spider-Man_(film)&sa=U&ei=iavVUKuFGsrNswbz74GQBA&ved=0CBYQFjAA&usg=AFQjCNEth5YspFPWp6CInyAfknlEvVgIfA
我需要得到
我试过
\?q=(.*)&
但它考虑了 &
的最后一次出现,所以我得到http://it.wikipedia.org/wiki/Spider-Man_(film)&sa=U&ei=iavVUKuFGsrNswbz74GQBA&ved=0CBYQFjAA
http://rubular.com/r/yBiGIMQTUV
最佳答案
您需要使用勉强匹配来匹配到第一个 &
。使用贪婪匹配(即使用 *
而不是 *?
),您的模式将匹配尽可能长的字符串以满足完整的模式。
所以使用这个: -
\?q=(.*?)&
或者您也可以使用带有否定
&
的字符类,它匹配除 &
之外的每个字符:-\?q=([^&]*)
请注意,如果您不希望
(.*?)
匹配空字符串,则应使用 +
量词。它匹配 1 or more
出现。
关于正则表达式:两个模式第一次出现之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14003330/