2013-02-20 64 views
1

我正在將一種形式的正則表達式轉換爲Perl兼容的正則表達式。我需要更換的%s所有出現\s,所以我做:Perl - 如何將轉義序列轉換爲字符串?

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

但它給我的錯誤:Unrecognized escape \s passed through at ....。其實我正在理解問題出在哪裏,所以我可能無法將字符串轉換爲未知的轉義序列。但我怎麼繞過這件事?

回答

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,如果是這樣,它需要一點點調整或第二個正則表達式來做到這一點)。

+0

這是我的第一個版本,但我認爲,這是不好的,因爲我需要以後使用替換的字符串像perl RE模式,它將包含\\ s而不是od \ s,然後我不能用它來替換空格。 – Krab 2013-02-20 18:35:26

+0

Sry,你說的對,我的不好。 – Krab 2013-02-20 18:44:22

相關問題