以下の2つの文字列はまったく同じですが、正規表現を使用して一致させることができませんか?誰かがこれで私を助けることができますか?
$x="Enzyme(s)"; $y="Enzyme(s)";
if ($x =~ /^$y$/){print "String Matches"};
quotemetaを使用します。
my $x="Enzyme(s)";
my $y="Enzyme(s)";
$y = quotemeta($y);
if ($x =~ /^$y$/){print "String Matches"};
M42 が既に述べたように使用するquotemeta
か、余分なコード行と $y 変数の永続的な変更を避けるため\Q...\E
に、正規表現で を使用して、範囲内のすべてのパターン メタ文字を無効にすることができます。
my $x="Enzyme(s)";
my $y="Enzyme(s)";
if ($x =~ /^\Q$y\E$/){print "String Matches"};
一致文字列 $y の括弧は、グループ化またはキャプチャとして解釈されています。通常の文字として扱うことができるように、「エスケープ」する必要があります。
$y の割り当ての後に次のコードを追加します。
$y =~ s/\(/\\(/g; # escape left parens
$y =~ s/\)/\\)/g; # escape right parens
「s」は「代用」です。
「g」は「グローバル」置換用です。つまり、文字列内のすべてのオカレンスを置き換えます。