- ベストアンサー
何度も出現する文字列AAのうち、3番目と4番目のAAの間にある文字列を得たい
以下のようなHTMLから、 <tr><td>AAA<td>BBB<td>CCC<td>DDD<td>EEE<td></tr> CCC という文字列だけを取り出したいとき、Perl、または 正規表現ではどのように記述したらよいのでしょうか?? Index関数を使ってみたのですが、うまくいきませんでした。 アドバイスをよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
文字列が $line に入っているものとして、 $line =~ /(<td>).+?\1.+?\1(.+?)\1/; print "$2\n"; これで、CCC が表示されるものと思います。
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.2
できればもうちょっと「やりたいこと」を正確に書いてほしいなぁと思いつつ, /^(?:.*?<td>){3}(.*?)<td>/ でもいいかも. 時間かかっていいなら split 使ってもいいし.
質問者
お礼
すみません、この問題以外の部分は出来上がっていたので、 ポイントを絞った質問とさせて頂きました。 ご回答ありがとうございます。
お礼
ご回答ありがとうございます。 +?\1 を増やす事で範囲をずらす事もできました。