• ベストアンサー

何度も出現する文字列AAのうち、3番目と4番目のAAの間にある文字列を得たい

以下のようなHTMLから、 <tr><td>AAA<td>BBB<td>CCC<td>DDD<td>EEE<td></tr> CCC という文字列だけを取り出したいとき、Perl、または 正規表現ではどのように記述したらよいのでしょうか?? Index関数を使ってみたのですが、うまくいきませんでした。 アドバイスをよろしくお願いします。

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

  • ベストアンサー
  • kumoz
  • ベストアンサー率64% (120/185)
回答No.1

文字列が $line に入っているものとして、 $line =~ /(<td>).+?\1.+?\1(.+?)\1/; print "$2\n"; これで、CCC が表示されるものと思います。

zuntata99
質問者

お礼

ご回答ありがとうございます。 +?\1 を増やす事で範囲をずらす事もできました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

できればもうちょっと「やりたいこと」を正確に書いてほしいなぁと思いつつ, /^(?:.*?<td>){3}(.*?)<td>/ でもいいかも. 時間かかっていいなら split 使ってもいいし.

zuntata99
質問者

お礼

すみません、この問題以外の部分は出来上がっていたので、 ポイントを絞った質問とさせて頂きました。 ご回答ありがとうございます。