私はPerlで正規表現にマッチさせようとしています。 Perlの正規表現に一致するようにしようとしたときPerl正規表現で特殊文字をエスケープする
my $source = "Hello_[version]; Goodbye_[version]";
my $pattern = "Hello_[version]";
if ($source =~ m/$pattern/) {
print "Match found!"
}
問題は、ブラケットは文字クラスを示していることで発生する(またはので、私は読んで)、そしてマッチが失敗して終わる:私のコードは次のようになります。私は\[
または\]
で角括弧を逃れることができますが、それは文字列を通って角括弧を検索するためには別のコードブロックが必要になることを知っています。角括弧を個別にエスケープせずに自動的に無視する方法はありますか?
クイックメモ:バックスラッシュを追加することはできません。これは単なる例です。私の実際のコードでは、$source
と$pattern
はどちらもPerlコードの外側(URIEncodedまたはファイルから)から来ています。
+1 index()を使用する場合 – sln
"正規表現の文字"とは何ですか?私は認識していない別の意味がない限り、正規表現は文字列内の文字列やパターンを特定の文字セットではなく一致させる手段に過ぎないという印象を受けましたか? index()がありがとうございます。私は明日私のサーバーにいるときにそれを撃つだろう。私はindex()が正常に動作し、正規表現マッチングよりもきれいであると思う。 – CoV
"regex character"はタイプミスで、私は "regex metacharacter"と書いていました。 – tadmc