正規表現の使い方と一致する例

このQ&Aのポイント
  • 正規表現の使い方と、一致する例について解説します。
  • 指定した正規表現と一致するURLの例を紹介します。
  • Perlの正規表現の書式と、一致するURLのパターンについて詳しく説明します。
回答を見る
  • ベストアンサー

正規表現

すみません。先輩の作ったPerlソースを机上で追っています。 Perlの実行環境がないので、よく動きが理解できないところが 多々あります。その中でも正規表現がどうにも理解できません。 以下の正規表現 ^http://([^/]*[.-])?(abc|efg?|hij|xxx)[.-] の場合、以下の例だと一致するのはどれになりますでしょうか? http://hij.com/ http://aahij.com/ http://hijaa.com/ http://aahijaa.com/ http://aa-hij.com/ http://hij-aa.com/ http://aa-hij-aa.com/ http://www.hij.com/ http://www.aa-hij.com/ http://www.hij-aa.com/ http://www.aa-hij-aa.com/ http://www.aahij.com/ http://www.hijaa.com/ http://www.aahijaa.com/ http://www.zzz.com/hij.html http://www.zzz.com/aa-hij.html http://www.zzz.com/hij-aa.html http://www.zzz.com/aa-hij-aa.html http://www.zzz.com/aahij.html http://www.zzz.com/hijaa.html http://www.zzz.com/aahijaa.html 簡単な解説も頂けると助かります。宜しくお願いします。

  • Perl
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • atom_seed
  • ベストアンサー率48% (25/52)
回答No.1

理解したいなら、動作確認は自分でできるようになったほうが良いと思いますよ。 以下、判定プログラムです。 while (<DATA>) { my $url = $_; print $url; if ( $url =~ '^http://([?^/]*[.-])?(abc|efg?|hij|xxx)[.-]' ) { print qq| OK\n|; } else { print qq| NG\n|; } } __DATA__ http://hij.com/ http://aahij.com/ http://hijaa.com/ http://aahijaa.com/ http://aa-hij.com/ http://hij-aa.com/ http://aa-hij-aa.com/ http://www.hij.com/ http://www.aa-hij.com/ http://www.hij-aa.com/ http://www.aa-hij-aa.com/ http://www.aahij.com/ http://www.hijaa.com/ http://www.aahijaa.com/ http://www.zzz.com/hij.html http://www.zzz.com/aa-hij.html http://www.zzz.com/hij-aa.html http://www.zzz.com/aa-hij-aa.html http://www.zzz.com/aahij.html http://www.zzz.com/hijaa.html http://www.zzz.com/aahijaa.html 結果では、 http://hij.com/ http://hij-aa.com/ がOKとなります。

coogon21
質問者

お礼

atom_seedさま 確認ソースの添付までありがとうございました。 良い機会なので自分のPCにperlが動く環境も 作ってみようと思います。

関連するQ&A

  • 秀丸で正規表現を使って置換

    あるファイルに関して、このような置換を行いたいです。 abc/xxx,yyy,zzz.html ↓ abc/xxx.html xxxとyyyとzzzはある任意の文字列(英数字で文字数はばらばら)で 「abc/」と「,」と「.html」は固定の文字列になります。 そこで、秀丸で開いて、正規表現による検索で、 「abc/.*,.*,.*.html」 として検索すると、該当部分が検索できることがわかりましたが、置換後をどのように設定すればいいのかわかりません。 置換後のabc/xxx.htmlの「xxx.html」の部分は検索前の任意の文字列をそのまま残したいのです。 秀丸の置換機能でこのようなことは可能でしょうか? 正規表現に関してあまり詳しくないので教えてください。

  • (?:系の正規表現

    perlの正規表現で以下の意味は、ABC01かABC99のみマッチするということでよいでしょうか? /^ABC(?:01|99)$/ (?:は$1など使用しない場合に用いるで正しいでしょうか? (?系の正規表現について知識不足ですが、一覧や詳しい書籍がありましたら教えてください。 昔、 /^ABC01|99$/ とかいて、ABC99がマッチせず、99がマッチしたので、|を使うときは、()を書いたのですが$1など変に作用させたくなかったので、最近(?:系の存在を知ってもっと詳しく知りたくなりました。 (?:はPerlの正規表現特有のものでしょうか?

    • ベストアンサー
    • Perl
  • perlの正規表現で...

    perlの正規表現で... abc (123) abc(123) からabcだけを取り出したいのですが、どのような正規表現になりますでしょうか? よろしくお願いします。

  • 正規表現で括弧にマッチさせたいのですが・

    Javaで正規表現を使おうとしてるのですがうまく行きません。 次のようにマッチさせたいです。 マッチさせたい文字列 : (abc)and(efg) マッチする文字列 : abcとefg マッチさせたい文字列 : (abc(efg)) マッチする文字列 : abc(efg) もしくは abc(efg)とefg とのようにまっちさせたいです。上の方はできたのですが、下の方がabc(efgとマッチしてまうのです。 いい方法を教えてください><お願いします。

  • VBS 正規表現の記号

    VBSで、一行単位で行読込みを行いましたが、特定の箇所を抜き出しがうまく出来ません。 例えば、行読込みにて下記一行が読み込まれた場合  abc "efg" abcの後の"~"の間、efgを抜き出したい場合、正規表現としてどのようになるのか、何方かご教授ください。

  • 正規表現教えてください。

    正規表現を教えてください。 YYYYMMDD_aa._aa_bbb.txt とあったとき YYYYMMDDは日付をあらわし, aa._aaはサーバ名をあらわして bbb.txtはファイル名をあらわすとき YYYYMMDD aa._aa bbb 値は変化するものでYYYYMMDD_サーバ名_fail.txtは変わらないとした時 それぞれをあらわすperlでの正規表現を教えてください。 まとめてあらわすのではなく、ひとつずつを表す方法でお願いします。

  • VBSで正規表現キーワード複数は?

    すみません、VBSの正規表現で改行をまたぐ検索をしたいのですが キーワードが複数の場合はどう書けばいいのでしょうか? 例:xxxxxabcxxxxxxxx改行 xxxxxefgxxxxxxxxxxx改行 xxxxxxLxxxx xは不定期文字 キーワード abc , efg , L .*abc[^efg][^L]*efg*L.*とやってもだめでした。 よろしくお願いします。

  • C#での文字抜き出し正規表現について

    C#にて、ファイルパスの中間部分だけを取り出す方法を考えておりますが、苦慮しております。 「C:\xxx\yyy\zzz.exe」の「yyy」だけ取り出す正規表現を教えてください。

  • 正規表現を教えてください。

    YYYYMMDD_aa._aa_bbb.txt とあったとき YYYYMMDDは日付をあらわし, aa._aaはサーバ名をあらわして bbb.txtはファイル名をあらわすとき YYYYMMDD aa._aa bbb 値は変化するものでYYYYMMDD_サーバ名_fail.txtは変わらないとした時 それぞれあらわすperlでの正規表現を教えてください。

  • 正規表現ですが・・・

    正規表現なんですが(Perlです。) Aa_abcd_aa.txt Aa_abcd_bb.txt Aa_abcd_cc.txt Bb_abcd.txt 上記のabcdの部分をマッチさせるために (?<=Aa_|Bb_).*(?=_aa|_bb|_cc|\.txt) としてみましたが、これでは Aa_abcd_aa.txt Aa_abcd_bb.txt Aa_abcd_cc.txt のabcd_aaやabcd_bbやabcd_ccとマッチしてしまいます。 なにかよい表現の仕方はありますか? まとめてマッチさせる表現が知りたいです。

専門家に質問してみよう