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