1

我正在将一种形式的正则表达式转换为与 Perl 兼容的正则表达式。我需要替换所有出现的%sto \s,所以我正在做:

$s =~ s/(?<!%)%s/\s/g;

但它给了我错误:Unrecognized escape \s passed through at ..... 实际上我知道问题出在哪里,所以我可能无法将一些未知的转义序列转换为字符串。但是我该如何绕过这个东西呢?

4

1 回答 1

3

您只需要转义 \,例如:

$s =~ s/(?<!%)%s/\\s/g;

例如

my $s = "this is a %s test with two %s sequences, the last one here %%s not changed";
$s =~ s/(?<!%)%s/\\s/g;
print "$s\n";

印刷

this is a \s test with two \s sequences, the last one here %%s not changed

(不确定您是否需要 %%s 最终只是 %s,如果需要,则需要稍作调整或第二个正则表达式来做到这一点)。

于 2013-02-20T18:30:55.950 回答