正则表达式替换中的 Perl 尖括号

Mik*_*ail 2 regex perl

我遇到了以下代码:

my $string = "fo2345obar";
$string =~ s<(\d+)><$1\.>g;
Run Code Online (Sandbox Code Playgroud)

我无法理解尖括号在这种情况下的含义;我之前看到的所有替换都是形式:

$string =~ s/(\d+)/$1\./g;
Run Code Online (Sandbox Code Playgroud)

尖括号是什么意思?

cho*_*oba 5

在 Perl 中,你可以使用任何你喜欢的分隔符,所以以下都是等价的:

s/PATTERN/REPLACEMENT/
s=PATTERN=REPLACEMENT=
s,PATTERN,REPLACEMENT,
Run Code Online (Sandbox Code Playgroud)

这在 中也是可能的sed

但是,在 Perl 中,一些分隔符是特殊的,因为它们是成对出现的,例如

s{PATTERN}{REPLACEMENT}
s<PATTERN><REPLACEMENT>
s(PATTERN)[REPLACEMENT]
Run Code Online (Sandbox Code Playgroud)

等等。