[英]How do you match \'
我需要一個正則表達式來匹配\' <---- 字面上的反斜杠撇號。
my $line = '\'this';
$line =~ s/(\o{134})(\o{047})/\\\\'/g;
$line =~ s/\\'/\\\\'/g;
$line =~ s/[\\][']/\\\\'/g;
printf('%s',$line);
print "\n";
我從中得到的只是
'this
當我想要的是
\\'this
無論字符串是使用'
還是"
聲明的,都會發生這種情況。這是一個用於跟蹤文件解析錯誤的測試腳本。我想確認正則表達式是否按預期工作。
我不知道當正則表達式解析反斜杠撇號時,它是否不被視為 2 個字符,而是被視為轉義的撇號。
無論哪種方式。 匹配\'
並打印出\\'
的最佳方法是什么? 我不想轉義任何其他反斜杠或撇號,我不能改變我正在解析的文本,只是它的處理和輸出方式。
s/\\'/\\\\'/g
您的所有三個模式都匹配一個反斜杠,后跟一個引號,上面是最簡單的。
您的測試是徒勞的,因為您的字符串不包含任何反斜杠。 字符串文字"\'this"
(來自之前的編輯)和'\'this'
(來自后來的編輯)都會產生字符串'this
。
say "\'this"; # 'this
say '\'this'; # 'this
要生成字符串\'this
,您可以使用以下任一字符串文字(除其他外):
"\\'this"
'\\\'this'
say "\\'this"; # \'this
say '\\\'this'; # \'this
答案當然是
s/[\\][']/\\\\'/g
這將匹配
\'this
並用這個代替
\\'this
這是我讓它工作的唯一方法。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.