如何在正则表达式中使用不同的分隔符(/,|)

时间:2014-01-24 14:58:13

标签: regex perl replace

修改 Perl脚本,我得到了这个:

$var =~ s,/$,,;

它似乎是一个正则表达式模式,但我期望找到“/”(或“|”)而不是“,”作为分隔符。

所以问题是: 何时以及为何应该使用正则表达式“/”或“|”或“,”?

2 个答案:

答案 0 :(得分:6)

在Perl中,在替换运算符以及许多其他运算符中,您可以将分隔符替换为几乎所有标点符号,例如

s#/$##
s=/$==
s!/$!!

当你需要的时候使用哪一个。最好选择一个与正则表达式中的字符不冲突的分隔符,以及一个可读的分隔符。

在您的情况下,使用了与/不同的分隔符,因为要在正则表达式中包含斜杠,以删除尾部斜杠。使用默认分隔符,它应该是:

s/\/$//

这不容易阅读。

就像我上面提到的,你可以用很多运算符和函数来做到这一点:

m#...#
qw/.../
qw#...#
tr;...;;
qq?...?

答案 1 :(得分:2)

在Perl中,默认的正则表达式分隔符为/

但是,可以使用其他字符代替/。通常,当正则表达式本身包含/时,您将使用备用分隔符。使用备用分隔符可以避免过度转义分隔符:

s/foo\/bar\//baz/;

VS

s|foo/bar/|baz|;

perlpdoc perlop

  

这对于匹配包含“/”的路径名特别有用,   避免LTS(倾斜牙签综合征)。