- ベストアンサー
正規表現のパターンに変数を指定したい
perlでパターンマッチを行う際、正規表現で行いますが、パターン文字列内に変数を指定したい場合はどうすればよいのでしょうか? if ($ENV{HTTP_USER_AGENT} =~ /$pattern/) { : } というようなことをしたいのですが、うまくいきません。 方法はありますでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
$dat = 'abcdefg'; $pattern = 'cde'; if($dat =~ /$pattern/){ print "01\n";} if($dat =~ $pattern){ print "02\n";} 結果 01 02 普通にマッチしますよ。 $patternの内容に問題あるのでは? 内容を再度確認してみてください。
その他の回答 (2)
- thatsthat
- ベストアンサー率55% (15/27)
回答No.3
trならともかく、m///やs///では パターンが正しければ、その書き方で良いハズですね。 一度$patternをprintしてみるのが良いと思います。 HTTP_USER_AGENTという事は、"/\d\.\d"なんてありそうですし、 メタ文字が気になりますね。 ただし、\Qはpatternの内容によってはマズイと思います。 '\d\.\d'が'\\d\\.\\d'になったり・・・。
質問者
お礼
ご回答ありがとうございました。 pattern文字列に改行コードが末尾に付いていたためにマッチしなかっただけでした。 お騒がせいたしました。
- stiffels
- ベストアンサー率34% (25/72)
回答No.1
=~ /\Q$aaa/ のように 頭に\Qを付けてクォートしなければいけなかったと思います。
質問者
お礼
ご回答ありがとうございました。 pattern文字列に改行コードが末尾に付いていたためにマッチしなかっただけでした。 お騒がせいたしました。
お礼
ご回答ありがとうございました。 pattern文字列に改行コードが末尾に付いていたためにマッチしなかっただけでした。 お騒がせいたしました。