0

以下の2つの文字列はまったく同じですが、正規表現を使用して一致させることができませんか?誰かがこれで私を助けることができますか?

$x="Enzyme(s)"; $y="Enzyme(s)";

if ($x =~ /^$y$/){print "String Matches"};
4

3 に答える 3

1

quotemetaを使用します。

my $x="Enzyme(s)";
my $y="Enzyme(s)";
$y = quotemeta($y);
if ($x =~ /^$y$/){print "String Matches"};
于 2013-10-02T09:33:57.033 に答える
0

M42 が既に述べたように使用するquotemetaか、余分なコード行と $y 変数の永続的な変更を避けるため\Q...\Eに、正規表現で を使用して、範囲内のすべてのパターン メタ文字を無効にすることができます。

my $x="Enzyme(s)";
my $y="Enzyme(s)";
if ($x =~ /^\Q$y\E$/){print "String Matches"};
于 2013-10-02T09:54:42.027 に答える
0

一致文字列 $y の括弧は、グループ化またはキャプチャとして解釈されています。通常の文字として扱うことができるように、「エスケープ」する必要があります。

$y の割り当ての後に次のコードを追加します。

$y =~ s/\(/\\(/g;  # escape left parens
$y =~ s/\)/\\)/g;  # escape right parens

「s」は「代用」です。
「g」は「グローバル」置換用です。つまり、文字列内のすべてのオカレンスを置き換えます。

于 2012-07-17T22:21:00.823 に答える