这个perl正则表达式有什么作用?

时间:2011-04-27 08:10:28

标签: perl

任何人都能解释一下这个正则表达式吗?这个$%做什么?我只是不知道。

$self = "/usr/bin/XYZ";

$self =~s%/+[^/]*$%%;

print ("$self\n");

感谢。

3 个答案:

答案 0 :(得分:3)

使用%而不是更常见的//分隔符,因为路径名通常包含很多/,否则你必须转义它们。 $匹配简单的行结束。第二个%是替换模式的结尾,在这种情况下是空的。

至于正则表达式的含义 - 它意味着找到以/开头并以行尾结尾的内容,其中没有/。基本上你会以这种方式得到XYZ并用没有任何东西代替它/ usr / bin。

答案 1 :(得分:3)

%被用作分隔符以避免必须转义/字符
它可以被重写

$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这样的东西

答案 2 :(得分:1)

百分号被用作s的分隔符,而不是更常见的s / pattern / replacement /。所以紧接在它之前的美元符号就是行尾锚。