问题描述
我是新来的正则表达式,并且想知道如何用短语来表示最后一个/
之后的所有内容.
I'm new at regular expressions and wonder how to phrase one that collects everything after the last /
.
我正在提取Google GData使用的ID.
I'm extracting an ID used by Google's GData.
我的示例字符串是
http://spreadsheets.google.com/feeds/spreadsheets/p1f3JYcCu_cb0i0JYuCu123
ID为:p1f3JYcCu_cb0i0JYuCu123
哦,我正在使用PHP.
Oh and I'm using PHP.
推荐答案
这至少匹配以下项之一(非斜杠),并以字符串结尾:
This matches at least one of (anything not a slash) followed by end of the string:
[^/]+$
注意:
- 没有理由,因为它不需要任何组-结果进入组0(匹配项本身).
- 使用
+
(而不是*
),以便如果最后一个字符是斜杠,则它不匹配(而不是匹配空字符串).
- No parens because it doesn't need any groups - result goes into group 0 (the match itself).
- Uses
+
(instead of*
) so that if the last character is a slash it fails to match (rather than matching empty string).
但是,最有可能是更快,更简单的解决方案是使用您语言的内置字符串列表处理功能-即ListLast( Text , '/' )
或同等功能.
But, most likely a faster and simpler solution is to use your language's built-in string list processing functionality - i.e. ListLast( Text , '/' )
or equivalent function.
对于PHP,最接近的函数是 strrchr ,其工作原理如下: :
For PHP, the closest function is strrchr which works like this:
strrchr( Text , '/' )
这包括结果中的斜线-根据下面的Teddy的评论,您可以使用 substr :
This includes the slash in the results - as per Teddy's comment below, you can remove the slash with substr:
substr( strrchr( Text, '/' ), 1 );
这篇关于正则表达式收集最后一个/之后的所有内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!