正则表达式匹配最后一个字符和字符串

时间:2012-09-11 11:20:08

标签: regex

我的网址如下......

  

/images/home/img/digits.png

我需要使用正则表达式或一些等价物来获取URL中的“数字”。我正在使用正则表达式,因为相同的代码将被复制,文件名将始终是不同的长度。

我尝试过使用正则表达式,然后在第一个/之后和.png之前得到所有内容,但我需要在最后一个/之前和之后的所有内容。

以下是我一直在尝试的内容:

(?<=/)(.*)(?=.png)

2 个答案:

答案 0 :(得分:6)

"/images/home/img/digits.png".match(/\/([^\/]*)\.png/i)

返回

["/digits.png", "digits"]

答案 1 :(得分:4)

你真的很亲密。 (?<=/)([^/]*)(?=\.png$)应该有效。

我添加的三件事情如下:

  1. [^/]*匹配任何不包含'/'的字符,因此匹配不能包含任何斜杠。
  2. \ .png阻止.匹配任何字符。
  3. $将其锚定在字符串的末尾。
  4. 另外,如果你只是想匹配数字部分并且你不关心其余部分,你不需要[^/]*周围的括号,因为你正在使用的前瞻和后视量词是不包括在比赛中。因此,在上述模式中,唯一将返回的内容将是[^/]*匹配的内容。这将在隐式组0中找到,或者如果您使用.NET,则在Match.Value中找到。

    总结所有这些,我将使用的是(?<=/)[^/]*(?=\.png$)。如果您还想匹配"/images/home/img/digits.PNG",还可以添加不区分大小写的标记。