- ベストアンサー
文字列の一致について
URLのデータベースがあるとします。 例えば http://hogehoge.com/aaaa/ http://hogehoge.com/aaa/ http://hogehoge.com/bbb/ http://hogehoge.com/ccc/ URLにある文字列が含まれていたら、○○を表示すると言う処理をしたいと思っています。 例えばURLに「aaa」の文字列を含まれている時、「あああ」を表示しようとすると、最初に登録されている「http://hogehoge.com/aaaa/」に該当してしまいます。 「aaa」であれば、http://hogehoge.com/aaa/に該当して、「あああ」を表示させるようにできないでしょうか? 要するにURLに「aaa」が含まれていたら、「http://hogehoge.com/aaaa/」ではなく、「http://hogehoge.com/aaa/」に該当して、「あああ」を表示させる。 今は $url =~ /aaa/ のように「=~」を使用しています。 $url =~ /\/aaa\// のようにするしかないでしょうか。 アドバイスを御願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>例えばURLに「aaa」の文字列を含まれている時 該当する場合の条件がはっきりしませんね。 例えば下の例の場合該当させたいですか?させたくないですか? 1 http://hogehoge.com/aaa00/ 2 http://hogehoge.com/bbb/aaa.html 3 http://aaa.hogehoge.com/bbb/ >$url =~ /\/aaa\// >のようにするしかないでしょうか。 これで問題なければ、これでいいと思います。 何か不都合が出るようなら、その例を示してください。 $url =~ m|/aaa/| 同じことですが、こう書いた方が多少読みやすいかもしれませんね。
その他の回答 (2)
- guci-ok
- ベストアンサー率33% (49/146)
¥bで単語境界を指定します。 C:\>perl -lne "print /aaa/ ? 'OK' : 'NG'" aaa OK aaaa OK /aaaa/ OK Terminating on signal SIGINT(2) C:\>perl -lne "print /\baaa\b/ ? 'OK' : 'NG'" aaa OK aaaa NG /aaaa/ NG Terminating on signal SIGINT(2) C:\>
- moon_night
- ベストアンサー率32% (598/1831)
そのようにするしかありません。