【小ネタ】改行込みのタグ間を正規表現でマッチさせる

恥ずかしながら長らく悩んでいたのですが、ようやく解決したので備忘録として(;´∀`)

AD

例えば:tableタグの内部をマッチさせる

<table>~</table>の中身を検索でマッチさせる場合を考えてみます。
実践的な使い方だと置換で「tableタグ内部をtbodyで囲う」というような処理になるでしょう。

失敗する例

一見すると以下の構文で簡単にマッチしそうですが、これは上手くいきません。

正規表現の「.」は「改行を除く任意の一文字」のため、以下のように改行が含まれるとマッチしません。

正しくマッチする例

「任意の一文字あるいは改行の繰り返し」と指定すればよいです。

後方参照($1,$2....)を使用する場合は括弧が2重にあることで意図しない結果になるおそれがありますので、後方参照の対象から除外したほうがよいでしょう。

※ 「?:」を頭につけることで参照されなくなります。

AD

Share

Commentsコメント

メールアドレスは公開されません。コメントは必ずご入力ください。

HTMLタグは使用できません。ソースコードを書き込みたい場合はCodetterGistCodePenなどのご利用が便利です。

コメントはまだありません。