我有一个如下所示的 URL...
/images/home/img/digits.png
我需要使用正则表达式或类似的方法从 URL 中获取“数字”。我正在使用正则表达式,因为相同的代码将被复制,并且文件名的长度总是不同的。
我试过使用正则表达式,我在第一个/之后和.png之前得到了所有东西,但是我需要最后一个/之后和.png之前的所有东西。
这是我一直在尝试的:
(?<=/)(.*)(?=.png)
我有一个如下所示的 URL...
/images/home/img/digits.png
我需要使用正则表达式或类似的方法从 URL 中获取“数字”。我正在使用正则表达式,因为相同的代码将被复制,并且文件名的长度总是不同的。
我试过使用正则表达式,我在第一个/之后和.png之前得到了所有东西,但是我需要最后一个/之后和.png之前的所有东西。
这是我一直在尝试的:
(?<=/)(.*)(?=.png)
"/images/home/img/digits.png".match(/\/([^\/]*)\.png/i)
返回
["/digits.png", "digits"]
你真的很亲近。(?<=/)([^/]*)(?=\.png$)
应该管用。
我添加的三件事执行以下操作:
[^/]*
匹配任何不包含 的字符'/'
,因此匹配不能包含任何斜杠。\
之前的。.png
.
$
锚定到字符串的末尾。此外,如果您只想匹配数字部分而不关心其余部分,则不需要括号,[^/]*
因为您使用的前瞻和后瞻量词不包含在匹配中。所以在上面的模式中,唯一会返回的是匹配的内容[^/]*
。这可以在隐式组 0 中找到,或者Match.Value
如果您使用的是 .NET,则可以在其中找到。
总结所有这些,我会使用的是(?<=/)[^/]*(?=\.png$)
. 如果您还想匹配,添加不区分大小写的标志也是值得的"/images/home/img/digits.PNG"
。