我需要一個正則運算式來匹配\' <---- 字面上的反斜杠撇號。
my $line = '\'this';
$line =~ s/(\o{134})(\o{047})/\\\\'/g;
$line =~ s/\\'/\\\\'/g;
$line =~ s/[\\][']/\\\\'/g;
printf('%s',$line);
print "\n";
我從中得到的只是
'this
當我想要的是
\\'this
無論字串是使用'或宣告的,都會發生這種情況"。這是一個用于跟蹤檔案決議錯誤的測驗腳本。我想確認正則運算式是否按預期作業。
我不知道當正則運算式決議反斜杠撇號時,它是否不被視為 2 個字符,而是被視為轉義的撇號。
無論哪種方式。\'匹配和列印的最佳方法是什么\\'?我不想轉義任何其他反斜杠或撇號,我無法更改我正在決議的文本,只是處理和輸出的方式。
uj5u.com熱心網友回復:
s/\\'/\\\\'/g
您的所有三個模式都匹配一個反斜杠,后跟一個引號,上面是最簡單的。
您的測驗是徒勞的,因為您的字串不包含任何反斜杠。字串文字"\'this"(來自較早的編輯)和'\'this'(來自以后的編輯)都會產生 string 'this。
say "\'this"; # 'this
say '\'this'; # 'this
要生成 string \'this,您可以使用以下任一字串文字(除其他外):
"\\'this"
'\\\'this'
say "\\'this"; # \'this
say '\\\'this'; # \'this
uj5u.com熱心網友回復:
答案當然是
s/[\\][']/\\\\'/g
這將匹配
\'this
并用這個代替
\\'this
這是我讓它作業的唯一方法。
uj5u.com熱心網友回復:
Perl
您的代碼段中有太多“正則運算式”。嘗試:
my $line = '\'this';
$line =~ s/'/\\\\\'/g;
printf('%s',$line);
print "\n";
# \\'this
或者......如果你想要另一種模式:
my $line = '\'this';
$line =~ s/'/\\'/g;
printf('%s',$line);
print "\n";
# \'this
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/486989.html
