- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:正規表現 最短一致と末尾)
正規表現 最短一致と末尾
このQ&Aのポイント
- <a href="http://www.google.co.jp/" target="_blank">http://www.google.co.jp/</a> <a href="http://www.google.co.jp/" target="_blank">http://www.google.co.jp/</a> <a href="http://www.google.co.jp/" target="_blank">http://www.google.co.jp/</a> 例のような文字列に文字列の最後のタグだけにヒットさせたい時下記のような検索文では全部にヒットしてしまいました。どうも?と$を同時に使うと全文にヒットしてしまうようなのですが、うまく最後のAタグだけにヒットさせる方法はありますでしょうか?
- 正規表現を使用して、文字列内の最後のAタグにのみヒットさせたい場合、下記の検索文を使用すると全文にヒットしてしまいます。どうすれば最後のAタグだけにヒットさせることができるでしょうか?
- 最短一致と末尾を取得するために正規表現を使用していますが、最後のAタグにのみヒットさせる方法がわかりません。どのように記述すればいいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
質問にある文字列をコピペして試してみました。 <a の後ろに複数のスペースがあるパターンがあるようで そこで失敗していますね。 その辺ゆるく見るとこうでしょうか。 <?php $str = '<a href="?http://www.google.co.jp/"? target="_blank">?http://www.google.co.jp/</a> <a href="?http://www.google.co.jp/"? target="_blank">?http://www.google.co.jp/</a><a href="?http://www.google.co.jp/"? target="_blank">?http://www.google.co.jp/</a>'; echo $str; preg_match("!.*(<a +href=\".*</a>)!", $str, $ary); echo "####\n"; echo $ary[1]; これで <a href="?http://www.google.co.jp/"? target="_blank">?http://www.google.co.jp/< /a> が $ary[1]に取れています。
その他の回答 (1)
- sakusaker7
- ベストアンサー率62% (800/1280)
回答No.1
.*(<a href=".*</a>)$ で$1に最後のaタグの内容が取れると思いますが これではダメですか?
質問者
補足
.*(<a href=".*</a>)$ (<a href=".*</a>)$ ダメでした…。
お礼
ありがとうございます。最後が取れました。 ところで、preg_mutch で "/"で囲むのは知っていたのですが、!で囲むのは初めて見たのですが、これはどういう意味があるのでしょうか? "!"を"/"に変更したところエラーが出てしまいました…。 調べてみたんですが、!を使う解説が見つけられずでして…。
補足
/a がエスケープできていないためのエラーでした…。 グループの場合は最短マッチになるのでしょうか…。 まだまだ正規表現は私には謎です…。ありがとうございました。