こんなHTMLがあって、bタグもしくはiタグに引っ掛るものをマッチする正規表現を書くとする。
後方参照を使うと<b class="a"><i class="c">b要素の中にi要素がある</i></b>場合でも正しくマッチする
<[bi][\s\S]*?>[\s\S]*?</[bi]>
って書くと、以下までしかマッチしない。最後のb閉じタグがマッチしない…
<b class="a"><i class="c">b要素の中にi要素がある</i>
一度マッチしたものを利用することを後方参照という。
後方参照を使うと、すんなりマッチする。
<([bi])[\s\S]*?>[\s\S]*?</\1>