匹配字符串末尾的正则表达式模式。

54

有人能告诉我如何使用正则表达式匹配字符串中最后一个 "/" 右侧的所有内容吗?

例如,str="red/white/blue";

我想匹配 "blue" ,因为它是最后一个 "/" 右侧的 所有内容

非常感谢!

5个回答

42

使用$元字符来匹配字符串的结尾。

在Perl中,这看起来像:

my $str = 'red/white/blue';
my($last_match) = $str =~ m/.*\/(.*)$/;

使用JavaScript编写,它看起来像:

var str = 'red/white/blue'.match(/.*\/(.*)$/);

我正在使用JavaScript,这很好。非常感谢。不过有一个问题:我还测试了一下没有“?”的这个模式 /./(.)$/,似乎也可以工作。你能告诉我它们之间的区别吗?再次感谢。 - user815460
那篇文章相当糟糕。它甚至没有示例、分析或样例用途。 - fIwJlxSzApHEZIl
贪婪量词在这里表现更好,因为它们一次性获取量化模式可以匹配的所有字符,从而更快地到达字符串的结尾($)。我已经编辑了答案。 - Wiktor Stribiżew

32

使用此正则表达式模式:/([^/]*)$


8

应该是这样的

~/([^/]*)$~

意思是:匹配一个斜杠/,然后匹配除了斜杠/以外的所有内容([^/]*),一直到结尾($,“结尾”锚点)。
我使用~作为分隔符,因为现在我不需要转义斜杠/

4

使用以下模式:

/([^/]+)$

4

类似这样的代码应该可以工作:/([^/]*)$

您使用的是什么编程语言?不同的编程语言中,字符串结尾的正则表达式符号可能会有所不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接