【发布时间】:2011-03-04 00:32:12
【问题描述】:
我有以下正则表达式,它在出现新情况之前运行良好
^.*[?&]U(?:RL)?=(?<URL>.*)$
基本上,它用于 URL,抓取 U= 或 URL= 之后的所有内容并在 URL 匹配中返回它
所以,对于以下
http://localhost?a=b&u=http://otherhost?foo=bar
不幸的是,出现了一个奇怪的案例
http://localhost?a=b&u=http://otherhost?foo=bar&url=http://someotherhost
理想情况下,我希望 URL 为“http://otherhost?foo=bar&url=http://someotherhost”,而不是“http://someotherhost”
编辑:我认为这解决了它......虽然它不漂亮
^.*[?&](?<![?&]U(?:RL)?=.*)U(?:RL)?=(?<URL>.*)$
【问题讨论】:
-
哦,讽刺的是......你的问题说“不够贪婪”,而问题是由
.*太贪婪引起的:) -
@MvanGeest,是的,我忘了 .* 会很贪婪,我一直试图让另一半“更贪婪”……我从来没有想过 .* 是问题所在。
标签: regex language-agnostic regex-greedy