我正在浏览stackoverflow并注意到一个正则表达式,用于匹配最后一个斜杠后的所有内容
([^/]+$)
例如,如果你有http://www.blah.com/blah/test reg表达式将提取' test'没有单引号。
我的问题是它为什么这样做?不是意味着斜线的开头吗?
编辑: 我想我不明白+ $ grabs" test"。 +重复上一个项目一次或多次,以便忽略所有/斜杠之间的所有数据。那么$如何提取测试
答案 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)
不,^
根据具体情况意味着不同的东西。当在角色类([]
)内时,^
否定表达式,意味着"匹配除/
之外的任何内容。
在[]
之外,^
表示您刚才所说的内容。