正则表达式,用于获取最后一次斜杠后的所

时间:2012-01-20 17:33:49

标签: regex

我正在浏览stackoverflow并注意到一个正则表达式,用于匹配最后一个斜杠后的所有内容

([^/]+$)

例如,如果你有http://www.blah.com/blah/test reg表达式将提取' test'没有单引号。

我的问题是它为什么这样做?不是意味着斜线的开头吗?

编辑: 我想我不明白+ $ grabs" test"。 +重复上一个项目一次或多次,以便忽略所有/斜杠之间的所有数据。那么$如何提取测试

7 个答案:

答案 0 :(得分:29)

不,^[]表示否定。

[/]代表'集合中的任何字符[/]'。

[^/]代表'不在集合中的任何字符[/]'。

答案 1 :(得分:13)

在原始问题中,只需要backslash before slash,在这种情况下,正则表达式将在字符串中获得everything after last slash

([^\/]+$)

答案 2 :(得分:1)

在括号内,^ /表示不是A /。所以这是匹配一个非 - /的序列直到行的末尾。

答案 3 :(得分:1)

就这样,对于非正则表达式版本,取决于您使用的语言,可以结合使用substring和lastIndexOf方法。只需找到“ /”字符的最后一个索引,然后获取紧随其后的子字符串即可。

即使用Java

String targetString = "a/string/with/slashes/in/it";
int lastSlashIndex = targetString.lastIndexOf('/');
String everythingAfterTheFinalSlash = targetString.substring(lastSlashIndex + 1);

答案 4 :(得分:0)

^开头的

[]是字符类否定。 [...]指定要匹配的一组字符。 [^...]表示匹配之外的每个字符。

因此[^/]表示匹配除/之外的所有可能字符。

答案 5 :(得分:0)

如果您将^放在一个组中,则表示所有字符都不在此组中。所以匹配所有非直线的包机直到$ anchor结束。

答案 6 :(得分:0)

不,^根据具体情况意味着不同的东西。当在角色类([])内时,^否定表达式,意味着"匹配除/之外的任何内容。

[]之外,^表示您刚才所说的内容。