正则表达式:两个模式第一次出现之间的文本

标签 regex

/url?q=http://it.wikipedia.org/wiki/Spider-Man_(film)&sa=U&ei=iavVUKuFGsrNswbz74GQBA&ved=0CBYQFjAA&usg=AFQjCNEth5YspFPWp6CInyAfknlEvVgIfA



我需要得到

http://it.wikipedia.org/wiki/Spider-Man_(film)



我试过 \?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/

相关文章:

java - 将 2 个反斜杠替换为一个

python - 在 Python MULTILINE 模式下仅匹配字符串的开头

node.js - 使用正则表达式搜索时 redis 高响应时间

JavaScript 正则表达式语法

regex - 从通过管道传输到 Perl 的多行文本中提取字段

正则表达式 grep 外部 IP 也带回内部 IP - 为什么?

regex - Sublime Text 2正则表达式与> 9个反向引用匹配

regex - Elixir 案例中的正则表达式

javascript - 正则表达式确定网站根目录

在 react 形式上使用正则表达式进行 Angular 7 电子邮件验证