#◆ 目的
正規表現は普通に書くと1行単位で検索されてしまいますが、
改行を含んだ複数行にまたがる対象を検索、置換したい場合は
下記のように指定します。
#◆ 検索対象
文章のここから
2行目
3行目
4行目ここまで
を対象とする場合
ここからここまで
#◆ 検索文字列
ここから[\s\S]*?ここまで
#◆ 検索結果
文章の
ここから 2行目 3行目 4行目ここまで
を対象とする場合
ここからここまで
#◆ 解説
分解して考えます。
ここから
[\s\S]
*?
ここまで
まずは、下記の文字列を探索します。
ここから
この文字列から対象範囲が開始されます。
次に、[ ]
で、中の文字のいずれか1字という意味になります。
[\s\S]
の、それぞれの意味は、
-
\s
垂直タブ以外のすべての空白文字 改行を含む -
\S
\s 以外のすべて
となります。この2つを[ ]
で囲むことで、
-
[\s\S]
改行を含む全ての文字1字
という意味になります。
*?
上記の文字を*
で0文字以上繰り返します、*
だけだと最長マッチになるため
?
をつけることで最小マッチ(条件に合う最も短い範囲)にすることができます。
ここまで
最後に、この文字列が最初にでたら探索終了となります。
#◆ 補足
ここから[\s\S]*ここまで
最小マッチの?
をつけないと、
文章の
ここから 2行目 3行目 4行目ここまで を対象とする場合 ここからここまで
となります。