by shigemk2

当面は技術的なことしか書かない

後方参照

こんな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>