任何人都可以解释我这个正则表达式吗?这$%做什么?我只是没有任何想法。这个Perl正则表达式有什么作用?
$self = "/usr/bin/XYZ";
$self =~s%/+[^/]*$%%;
print ("$self\n");
谢谢。
任何人都可以解释我这个正则表达式吗?这$%做什么?我只是没有任何想法。这个Perl正则表达式有什么作用?
$self = "/usr/bin/XYZ";
$self =~s%/+[^/]*$%%;
print ("$self\n");
谢谢。
%被用作分隔符,以避免必须逃脱/字符
它可以改写
$self=~s/\/+[^\/]*$//;
所以$是字符串锚的端部。表达式取代: -
\/+ - one or more forward slashes
[^\/]* - any number of anything that is not a forward slash
$ - at the end of the string
什么也没有。
所以剥去像/end of string
off
使用%代替更常见的分隔符,因为路径名通常包含很多/,否则您必须将其转义。 $匹配只是行的末尾。第二个%是在这种情况下为空的替代模式的结束。
至于正则表达式的含义 - 它意味着找到一个以/开始并以尾部/尾部结束的东西。基本上你会得到这样的XYZ,并将其替换为/ usr/bin中的任何内容。
+1击败我2秒。这两个%%只是表示替换字符串是空的。 – 2011-04-27 08:17:06
傻了,我没有注意到它是替代品。 :-) – 2011-04-27 08:20:43
百分号被用作s的分隔符而不是更常见的s/pattern/replacement /。所以紧接在它之前的美元符号是线尾的锚点。
为什么你不把它放在一个小文件中并运行它?没有什么比自己尝试一些东西。你不仅可以学到更多东西,还可以玩弄它,找到更多有趣的东西。 – shawnhcorey 2011-04-27 13:14:40