1

スクリプトに次のコードがあります。

if($description =~ /\'/) {
    print "I am here\n";    
    $description =~ s/\'/'/g;
}
print "description = $description\n";

このスクリプトを実行する"I am here\n"と、比較が失敗するため、出力が得られません。

ただし、$description文字列にアポストロフィが含まれている場合。

$description = "The baseball player’s spiritual redemption and recovery from drug addiction.";

コンテキスト: nytimes ベストセラー API (json 形式で返される) への呼び出しから取得した文字列を解析しています。この文字列は文字列に格納され$descriptionます。

4

2 に答える 2

6

サンプル文字列にアポストロフィが含まれていません。が含まれていU+2019 RIGHT SINGLE QUOTATION MARKます。

一致するはずです/\x{2019}/

于 2012-08-22T18:26:19.340 に答える
0

正規表現で引用符をエスケープする必要はありません。コードを少し変更する:

use strict;
use warnings;

my $description="The baseball player's spiritual redemption and recovery from drug addiction.";

if($description =~ /'/)
{
        print "I am here\n";
        $description =~ s/'/foo/g;
}

print "description = $description\n";

次の出力が生成されます。

I am here
description = The baseball playerfoos spiritual redemption and recovery from drug addiction.
于 2012-08-22T18:11:14.477 に答える