61
49

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

正規表現の例文-複数行にまたがる処理

Last updated at Posted at 2020-01-10

#◆ 目的
正規表現は普通に書くと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行目ここまで を対象とする場合 ここからここまで

となります。

61
49
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
49

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?