我是正则表达式的新手,并想知道如何在最后一个之后收集所有内容/.
我正在提取Google的GData使用的ID.
我的示例字符串是
http://spreadsheets.google.com/feeds/spreadsheets/p1f3JYcCu_cb0i0JYuCu123
Run Code Online (Sandbox Code Playgroud)
身份证号码是: p1f3JYcCu_cb0i0JYuCu123
哦,我正在使用PHP.
Pet*_*ton 106
这匹配至少一个(任何不是斜杠)后跟字符串结尾:
[^/]+$
Run Code Online (Sandbox Code Playgroud)
笔记:
+(而不是*),如果最后一个字符是斜杠,则无法匹配(而不是匹配空字符串).
但是,最有可能更快更简单的解决方案是使用您的语言的内置字符串列表处理功能 - 即ListLast( Text , '/' )等效功能.
对于PHP,最接近的函数是strrchr,其工作方式如下:
strrchr( Text , '/' )
Run Code Online (Sandbox Code Playgroud)
这包括结果中的斜杠 - 根据下面Teddy的评论,你可以用substr删除斜杠:
substr( strrchr( Text, '/' ), 1 );
Run Code Online (Sandbox Code Playgroud)
Jam*_*col 12
您还可以使用basename函数获取"文件名"或最后一部分.
<?php
$url = 'http://spreadsheets.google.com/feeds/spreadsheets/p1f3JYcCu_cb0i0JYuCu123';
echo basename($url); // "p1f3JYcCu_cb0i0JYuCu123"
Run Code Online (Sandbox Code Playgroud)
在我的盒子上,我可以传递完整的URL.您可能需要http:/从前面剥离.
Basename和dirname非常适合移动任何看起来像unix文件路径的东西.
/^.*\/(.*)$/
Run Code Online (Sandbox Code Playgroud)
^ =行的开始
.*\/ =贪婪匹配到行开始的最后一次出现
(.*) =在最后一次出现之后出现的一切事物