雑談・知ると得する話・思ったこと、生き方の話

辛口!!ぺんじん雑記

プログラミング

絶対できる正規表現で改行含む複数行を検索・置換する方法

投稿日:

はじめに

検索でトップページに出てくる奴はほとんど

開始[\s\S]*?終了

みたいな感じなんですけど、自分が使っているVisual Studioなんかだと出来なかったので

出来ねえじゃん!!!!!

とキレながら、自分で色々試してみたらあっさりできました

 

正規表現で改行含む複数行を検索・置換する方法

 

開始(.*\n)*?終了

 

という書き方です。シンプルでしょ?

開始~終了までがマッチされます

最短マッチですので、最短マッチしたくないひとは?を外しましょう

 

最短マッチとは

開始 aaaaaaaa 終了 bbbbbbbbbb 終了

いうテキストがあったとき

開始 aaaaaaaa 終了

の部分をマッチしてくれることです

 

最長マッチとは

?を取ると、最長マッチになるため

開始 aaaaaaaa 終了 bbbbbbbbbb 終了

というより長い部分がマッチされます

 

 

次に、なぜ検索できるのかを解説します

仕組みを解説

(.*\n)*?

をバラして考えましょう

 

(.*\n) は、

「任意の文字列(0文字も含む)+おしりに改行」

です

 

それに*が付いた(.*\n)*は、

「任意の文字列(0文字も含む)+おしりに改行」の繰り返し

という意味です

 

更に、*に?がつくと「最短マッチしてくれよぉ」という意味になるので

?が付いた(.*\n)*?は、

「任意の文字列(0文字も含む)+おしりに改行」の繰り返し(最短マッチモード)

という意味になります。

 

 

正規表現、面倒くさっ・・・

 

 

 

-プログラミング
-,

Copyright© 辛口!!ぺんじん雑記 , 2019 All Rights Reserved Powered by STINGER.