正则表达式收集最后一个 /

2022-08-30 08:43:45

我是正则表达式的新手,想知道如何用一个短语来收集最后一个之后的所有内容。/

我正在提取Google的GData使用的ID。

我的示例字符串是

http://spreadsheets.google.com/feeds/spreadsheets/p1f3JYcCu_cb0i0JYuCu123

其中 ID 为:p1f3JYcCu_cb0i0JYuCu123

哦,我正在使用PHP。


答案 1

这至少匹配一个(任何不是斜杠的东西),后跟字符串的末尾:

[^/]+$


笔记:

  • 没有parens,因为它不需要任何组 - 结果进入组0(匹配本身)。
  • 使用(而不是),以便如果最后一个字符是斜杠,则无法匹配(而不是匹配空字符串)。+*


但是,最有可能的是更快,更简单的解决方案是使用您的语言的内置字符串列表处理功能 - 即 或等效函数。ListLast( Text , '/' )

对于PHP,最接近的函数是strrchr,它的工作原理如下:

strrchr( Text , '/' )

这包括结果中的斜杠 - 根据Teddy在下面的评论,您可以使用substr删除斜杠:

substr( strrchr( Text, '/' ), 1 );

答案 2

一般:

/([^/]*)$

然后,所需的数据将是第一组的匹配项。


编辑由于您使用的是PHP,因此您还可以使用strrchr,它返回从字符串中字符的最后一次出现到结束的所有内容。或者,您可以使用 strrpossubstr 的组合,首先找到最后一次出现的位置,然后将子字符串从该位置到最后。或者爆炸array_pop,在处拆分字符串,只得到最后一部分。/


推荐