Perl - 如何将转义序列放入字符串?

时间:2013-02-20 18:26:54

标签: regex perl

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

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

但它给了我错误:Unrecognized escape \s passed through at ....。其实我在理解问题所在,所以我可能无法转换为字符串一些未知的转义序列。但是我该如何绕过这件事?

1 个答案:

答案 0 :(得分: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,如果是这样,它需要一点调整或第二个正则表达式来执行此操作)。