如果是数字,请忽略斜线后的所有内容

时间:2013-04-17 17:41:00

标签: regex

如果它是一个数字,我试图忽略斜线后的所有内容 -

http://www.example.com/123abc/456/ABC/789/

所需的输出

http://www.example.com/123abc/

到目前为止,我已尝试过以下内容 -

(https?:\/\/.*)(?=/\d+).*

给了我 -

http://www.example.com/123abc/456/ABC/

非常感谢!

2 个答案:

答案 0 :(得分:2)

我想你想要

(https?:\/\/.*?)(?=/\d+\/).*
//            ^        ^^

制作repetition non-greedy,并将整个目录强制为一个数字(否则/123abc…已经匹配)。也许您还想将前瞻中的第一个斜杠移动到匹配组中,以便结果具有尾部斜杠。

答案 1 :(得分:1)

.*贪婪,并会尽可能地匹配。 789存在允许匹配所有内容。相反,你可以使用。

(https?:\/\/.*?)(?=/\d+).*

?使.*不再感兴趣,因此它会尽可能匹配 little 以满足表达式。

但是,这并不符合您所描述的要求,实际上“如果它是一个数字,则忽略第二个斜杠之后的所有内容”。您可以使用(在您的具体情况下):

(https?:\/\/.*?\/.*?\/)(?=\d+).*