このようなHTMLがあったとして、
<p class="entry">p要素です。</p> .... </html>
このHTMLにだけマッチする正規表現を書きたいとする。
<p class="entry">
でも、
<p[\s\S]*>
と書いたら、全てのHTMLにマッチしてしまう。\s\Sが全ての文字にマッチするので、
<p>hoge</p><p>fuga</p>
の最初の<と最後の>にマッチしてしまうからである。
- や*などを含むパターンにマッチさせる場合、出来る限り長い文字列にマッチしようとする。これを最長一致という。
で、上のように最初のpタグにだけマッチさせたい場合は、
<p[\s\S]*?>
と書けばいい
また、
<p class="entry">p要素です。</p>
だけにマッチさせたいときは、
<p[\s\S]*?>[\s\S]*?</p>
と書く。