私はPerlプログラムを使ってファイルからテキストを抽出しています。私は例えば、私は、テキストの区切り文字として使用する文字列の配列を持っている:Perl正規表現で特殊文字を処理するにはどうすればよいですか?
$pat = $arr[1] . '(.*?)' . $arr[2];
if ($src =~ /$pat/) {
print $1;
}
しかし、配列内の文字列の二つがと(Buy now)
です。これらの問題は、文字列のシンボルがPerl正規表現のend-of-stringとcaptureグループを表しているため、テキストが意図したとおりに解析されないことです。
方法はありますか?
特に、\ Qはバックスラッシュエスケープ文字から保護しません。 quotemetaははるかに一般的な解決策です。 –
@BenBlank:どういうことですか? '\ Q' *は' quotemeta'にコンパイルされます。それらは同じ機能です。同様に '\ L'は' lc'、 '\ U'を' uc'などにコンパイルします。 '\ Q'はバックスラッシュエスケープ文字を完全にうまく保護します。 ** – tchrist