Perlの正規表現に関する質問です。


日本語を抽出したいのですが、

下記のタグを含めたHTMLソースがあるとします。

<meta name="description" content="ああああああああああああああああああああああああああ">
<meta name="keywords" content="いいいいいいいいいいいいいいいいいいいいいいいいいい">

この場合、description、keywordsなどをきれいに抽出するにはどうすればいいでしょうか?

また、正規表現で参考になるサイトなどがありましたら、教えて頂けないでしょうか?

宜しくお願いします。

回答の条件
  • URL必須
  • 1人20回まで
  • 登録:2007/02/15 22:20:06
  • 終了:2007/02/20 19:29:58

ベストアンサー

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/02/15 22:28:45

ポイント27pt

文字コードや他の条件にも寄るように思いますが、

$html =~ m/<meta name="description" content="(.*?)">/;
$description = $1;
$html =~ m/<meta name="keywords" content="(.*?)">/;
$keywords = $1;

とするのが一番単純かと。


ただ、このあたりは無理に自分で正規表現を書くよりも HTML をパーすするモジュールを使ったほうが間違いないですが。


また、参考資料としては perl 付属のドキュメントが手始めとしては良いでしょう。

perlretut - Perl $B$N@55,I=8=$N%A%e!<%H%j%"%k(B

id:zachouR

ありがとうございます!

モジュールは今、勉強中でしてまだまだ自由に扱う事が出来ません。

大変参考になりました。

もし、よろしければご迷惑かと思いますが、お礼を多めに差し上げますので、(.*?)の部分を解説して頂けないでしょうか?

2007/02/15 22:35:57

その他の回答(2件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/02/15 22:28:45ここでベストアンサー

ポイント27pt

文字コードや他の条件にも寄るように思いますが、

$html =~ m/<meta name="description" content="(.*?)">/;
$description = $1;
$html =~ m/<meta name="keywords" content="(.*?)">/;
$keywords = $1;

とするのが一番単純かと。


ただ、このあたりは無理に自分で正規表現を書くよりも HTML をパーすするモジュールを使ったほうが間違いないですが。


また、参考資料としては perl 付属のドキュメントが手始めとしては良いでしょう。

perlretut - Perl $B$N@55,I=8=$N%A%e!<%H%j%"%k(B

id:zachouR

ありがとうございます!

モジュールは今、勉強中でしてまだまだ自由に扱う事が出来ません。

大変参考になりました。

もし、よろしければご迷惑かと思いますが、お礼を多めに差し上げますので、(.*?)の部分を解説して頂けないでしょうか?

2007/02/15 22:35:57
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402007/02/15 23:03:14

ポイント27pt

.*

ここまでで、任意の文字が0個以上にマッチする。

ただしこのままだと考えられる文字列の最大までマッチしてしまうので、

.*?

とすることで考えられる文字列の最小までに制限する。

(.*?)

それを括弧でくくる事でマッチ後、$1 .. etc の変数で参照できるようにする。

http://q.hatena.ne.jp/answer

id:zachouR

ありがとうございました!

理解できました!

2007/02/16 09:37:31
id:pigment No.3

pigment回答回数95ベストアンサー獲得回数22007/02/16 00:21:41

ポイント26pt

while(<>){
    if(/<\s*meta\s*name\s*=\s*"(.*)"\s*content\s*=\s*"(.*)"\s*>/){
        print "$1\n";
        print "$2\n";
    }
}

空白がどのくらい入るのかわからない部分は全部¥s*

Googleで正規表現 Perlで検索するとそれなりにヒットします。

Perl Cookbookもお勧め、

CGIじゃないPerlの使い方を知ってほしいなぁとか思います。

http://www.unix.org.ua/orelly/perl/cookbook/index.htm

http://www.sarinaga.com/progtoy/perlcookbooklink.html

リンク張っちゃっていいのか不明だけど、、、

id:zachouR

ありがとうございます!

参考にさせていただきます!

2007/02/16 09:38:18

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません