修改 Perl脚本,我得到了这个:
$var =~ s,/$,,;
它似乎是一个正则表达式模式,但我期望找到“/”(或“|”)而不是“,”作为分隔符。
所以问题是: 何时以及为何应该使用正则表达式“/”或“|”或“,”?
答案 0 :(得分:6)
在Perl中,在替换运算符以及许多其他运算符中,您可以将分隔符替换为几乎所有标点符号,例如
s#/$##
s=/$==
s!/$!!
当你需要的时候使用哪一个。最好选择一个与正则表达式中的字符不冲突的分隔符,以及一个可读的分隔符。
在您的情况下,使用了与/
不同的分隔符,因为要在正则表达式中包含斜杠,以删除尾部斜杠。使用默认分隔符,它应该是:
s/\/$//
这不容易阅读。
就像我上面提到的,你可以用很多运算符和函数来做到这一点:
m#...#
qw/.../
qw#...#
tr;...;;
qq?...?
答案 1 :(得分:2)
在Perl中,默认的正则表达式分隔符为/
。
但是,可以使用其他字符代替/
。通常,当正则表达式本身包含/
时,您将使用备用分隔符。使用备用分隔符可以避免过度转义分隔符:
s/foo\/bar\//baz/;
VS
s|foo/bar/|baz|;
这对于匹配包含“/”的路径名特别有用, 避免LTS(倾斜牙签综合征)。