正则表达式 - 匹配URL直到

时间:2014-05-09 12:38:29

标签: regex

什么是最好的"匹配具有许多逗号(,,,,,)的字符串中的URL的方法,并且可能具有404字符串后面的分隔符昏迷。在404字符串到来之后,获取字符串直到此部分。

示例:

http://stackoverflow.com/this,,,can,be,,a,slug,,,0,404

http://stackoverflow.com/this,,,can,be,,a,slug,,,0

我必须得到:http://stackoverflow.com/this,,,can,be,,a,slug,,,0

试过这些:

^(.*)(\,404)?
[^,404]*

2 个答案:

答案 0 :(得分:2)

使用积极前瞻:

.*(?=,404)

或者如果你想要一个捕获组,请使用:

(.*)(?=,404)

演示:http://regex101.com/r/lH1vZ3

答案 1 :(得分:1)

这里的问题是,(.*)将匹配所有内容,包括404,如果您将最后一个选中。你需要的是一个非贪婪的.*,它将尽可能少地匹配(尽可能不多)。 试试这个:

^(.*?)(,404)?$

(我不认为,也应该被转义)

当然,如果您不确定自己是否正在处理正确的网址,则应该使用适合您网址的某种模式替换(.*?),然后应用非贪婪({ {1}}或*?)那里。