任何人都能解释一下这个正则表达式吗?这个$%做什么?我只是不知道。
$self = "/usr/bin/XYZ";
$self =~s%/+[^/]*$%%;
print ("$self\n");
感谢。
答案 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 /。所以紧接在它之前的美元符号就是行尾锚。