簡體   English   中英

你怎么匹配\'

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM