プロが教えるわが家の防犯対策術!

perlで正規表現を使おうとしています。
確認したい文字列は変数にしており
その文字列には「?」が含まれています。
------------------------
$str = "文字列"
$exp = "test?aaa=bbb";
if ($str =~ /^sss.*${exp}$/){
#do something
}
------------------------
これだと、ヒットしません。。

$expを"test\?aaa=bbb"にすることもできません。
正規表現にはこだわりません。
どうしたら、うまくマッチングできますかね。。

なにか案があれば教えてください。

A 回答 (2件)

if ($str =~ /^sss.*\Q${exp}\E$/){


のようにすると、\Q~\Eの間メタ文字が無効になります。
    • good
    • 0
この回答へのお礼

ありがとうございます!

うまくいきました!

ちょっと処理に時間がかかるようですが
ままままぁ、問題なしです。

感謝です。

お礼日時:2006/07/12 12:12

$expにある文字列は正規表現のメタ文字も文字そのものとして検索したいということであれば、



$exp = quotemeta $exp;

してからマッチングをすれば望みどおりの結果になると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます!

$exp は、マッチングのあとで文字列として
そのまま出力したかったので
quotemetaを使うと、ちょっと支障がありました。

が、quotemetaは知らなかったので勉強になりました。
感謝です。

お礼日時:2006/07/12 12:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!