如果它是一个数字,我试图忽略斜线后的所有内容 -
http://www.example.com/123abc/456/ABC/789/
所需的输出
http://www.example.com/123abc/
到目前为止,我已尝试过以下内容 -
(https?:\/\/.*)(?=/\d+).*
给了我 -
http://www.example.com/123abc/456/ABC/
非常感谢!
答案 0 :(得分:2)
我想你想要
(https?:\/\/.*?)(?=/\d+\/).*
// ^ ^^
制作repetition non-greedy,并将整个目录强制为一个数字(否则/123abc…
已经匹配)。也许您还想将前瞻中的第一个斜杠移动到匹配组中,以便结果具有尾部斜杠。
答案 1 :(得分:1)
.*
贪婪,并会尽可能地匹配。 789
存在允许匹配所有内容。相反,你可以使用。
(https?:\/\/.*?)(?=/\d+).*
?
使.*
不再感兴趣,因此它会尽可能匹配 little 以满足表达式。
但是,这并不符合您所描述的要求,实际上“如果它是一个数字,则忽略第二个斜杠之后的所有内容”。您可以使用(在您的具体情况下):
(https?:\/\/.*?\/.*?\/)(?=\d+).*