• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:トラックバック先のURLの抽出(ライブドアのブログにて))

ライブドアのブログでトラックバックされたURLを取得する方法

このQ&Aのポイント
  • ライブドアのブログにトラックバックされたURLを取得するプログラムを作成しましたが、リニューアル前後でHTMLの構造が変わったため、一部のURLが取得できません。
  • リニューアル後の新しいブログのURLは<a target="_blank" href="http://blog.livedoor.jp/example/archives/500.html" class="posttitle">という形式で、リニューアル前の古いブログのURLは<a class="atrackback-post" target="_blank" href="http://yaplog.jp/example/archive/178">という形式です。
  • 新しいブログと古いブログの両方に対応するためには、プログラムを改正して、新しいブログ用と古いブログ用の正規表現パターンを使い分ける必要があります。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>実行結果がnullになってしまいます。 それは、多分、 >m.group(1)+","; がnullになるという意味ですよね? 実際に試してないのですが、 m.group(N)のNは、部分文字列としてパターンで()で囲まれた部分の位置を表しています。 なので、 前のパターンでマッチした場合 m.group(1)で、 後ろのパターンでマッチした場合 m.group(2)で、 取り出します。 m.find()でマッチしたということは既にわかっているので、 m.group(1)がnullの時は、m.group(2)を使うというようにすればいいかと思います。

shows
質問者

お礼

ご回答ありがとうございます。 無事URLを取得できました。 分かりやすい説明ありがとうございました。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

"パターン"|"パターン" ではなくて "パターン|パターン"

shows
質問者

お礼

何度もすみません。 一応、ご指摘のように改正してプログラムを実行したのですが、 プログラムは動くのですが、 条件の後者の場合のときは、実行結果がnullとなってしましました。 例えば、 "パターン1|パターン2" としたとき、パターン2の場合は実行結果がnullになってしまいます。 条件を入れ替える、つまり "パターン2|パターン1" にするとURLを表示してくれます。 解決方法をお願いします。 ちなみにリニューアル後のブログの例として以下を http://blog.livedoor.jp/takapon_ceo/archives/50030785.html リニューアル前のブログとして以下を試しました。 http://blog.livedoor.jp/kuroemon21/archives/50174493.html

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

正規表現のパターン指定で、 パターン1|パターン2 のように指定できます。 どっちかがマッチするのであればそれでいけると思います。

shows
質問者

お礼

ご回答ありがとうございます。 以下のように改正したのですが、 Pattern trackBack = Pattern.compile("<a class=\"atrackback-post\" target=\"_blank\" href=\"(http://.+)\">"|"<a target=\"_blank\" href=\"(http://.+)\" class=\"posttitle\">"); エラーとして GetTBAddrLivedoor.java:15: 演算子 | は java.lang.String,java.lang.String に適用 できません。 Pattern trackBack = Pattern.compile("<a class=\"atrackback-post\" target=\"_blan k\" href=\"(http://.+)\">"|"<a target=\"_blank\" href=\"(http://.+)\" class=\"po sttitle\">"); となりました。 正規表現のパターン指定が間違っているのでしょうか? お願いします。