このブログのはてなブックマーク数 このエントリーをはてなブックマークに追加

知らなきゃ絶対損するPCマル秘ワザ

知らなくて損したPC情報とかを分かりやすくメモする個人ブログ。
『月,水,金』の週3回更新!(予定)

Notepad++:正規表現で複数行の文字列を検索したい

このエントリーをはてなブックマークに追加
Notepad++ 検索 置換 正規表現 改行 含める 含まない


こんにちは、さち です。

普段、テキストの編集は「Notepad++」を使っています。

複数カーソル(マルチエディット)など様々な便利機能がある上
起動も超速いという最強のテキストエディターです。
(もともとは、プログラマー向けのエディターらしい)

先日、その Notepad++ の「検索」で「正規表現」を使っていた時に
複数行になっている文字列を検索したいことがありました。

普通に、任意の1文字を表す「.(ドット)」を使えばいけるかと思ったら
「改行」は含んでくれないみたいです……。




正規表現の「.(ドット)」は改行を含んでくれない

  1. 2行になっている文字列「ラブライブ!サンシャイン!!」があります。
    正規表現的に書けば「ラブライブ!\nサンシャイン!!」でしょうか。
    Notepad++ 検索 置換 正規表現 改行 含める 含まない

  2. 「Ctrl + F」キーを押して、「検索」を開きます。
    Notepad++ 検索 置換 正規表現 改行 含める 含まない

  3. 「正規表現」で検索をします。
    Notepad++ 検索 置換 正規表現 改行 含める 含まない

  4. 下図のように、「イブ」から「イン」までが検索されるような正規表現は……
    Notepad++ 検索 置換 正規表現 改行 含める 含まない

  5. イブ.*イン」で良いですね。
    いざ、検索すると……
    Notepad++ 検索 置換 正規表現 改行 含める 含まない

  6. 「見つからない」と表示されてしまいました。
    正規表現の「.(ドット)」は任意の1文字を表すメタ文字ですが
    「\n」などの「改行」は含まないので、こういう結果になったわけです。
    Notepad++ 検索 置換 正規表現 改行 含める 含まない




「.(ドット)」に改行も含める方法

  1. 「Ctrl + F」キーで「検索」を開きます。
    Notepad++ 検索 置換 正規表現 改行 含める 含まない

  2. 「正規表現」を選択。
    Notepad++ 検索 置換 正規表現 改行 含める 含まない

  3. さらに、その右にある「. は改行と一致」にチェックを入れます。
    Notepad++ 検索 置換 正規表現 改行 含める 含まない

  4. 先ほどと同じ「イブ.*イン」で検索。
    Notepad++ 検索 置換 正規表現 改行 含める 含まない

  5. 「見つかった」と表示されました。
    Notepad++ 検索 置換 正規表現 改行 含める 含まない

  6. ちゃんと、「イブ!サンシャイン」が選択されています。
    .(ドット)」が「改行(\nなど)」も含むようになったからですね。
    Notepad++ 検索 置換 正規表現 改行 含める 含まない

ちなみに、プログラミング言語によっては
この機能が「シングルラインモード」として用意されていることがあります。
修飾子(フラグ)で変更できます(通常は「s」)。

ちなみに、私がよく使う JavaScript にはありません。悲しいです。




おまけ - 改行コード「LF」「CR」の話

人間から見ると「改行」は改行以外の何ものでもないですが
PC にとっての改行は次の3種類があります。
改行コード 表 CR LF

OS ごとに違うんです。ややこしいですよね。
そのせいで、Mac で書いたテキストを Windows の「メモ帳」で開くと
改行が正しく表示されないなんてことがありました。
(Windodws 10 のバージョン「1809」でやっと改善された)

「CR」は、旧バージョンの Mac で使われていたものなので
現在は、ほぼ絶滅したと考えて問題ありません。

じゃあ、「改行コード」に書かれている「LF」と「CR」って何でしょう?
実はこの2つ、タイプライターで使われていた用語なんです。
改行コード 表 CR LF


結局、PC の「LF」と「CR」の違いって何!?

タイプライターでは、「LF」と「CR」は違う意味のものでしたが
ぶっちゃけ、PC では違いなんて気にしなくていいです。
(タイプライターの動作を考えれば、正確なのは Windows ではあるけど)

「LF」「CR」、名前は違うけれど、どっちも「改行」を意味するもの。
「改行」の記述ルールが OS ごとに違う。
そういう認識で大丈夫です。

ちなみに、私が使用しているテキストエディター「Notepad++」では
下部のステータスバーに、そのファイルの改行コードが表示されていて
ダブルクリックで、いつでも変換できます。
Notepad++ 検索 置換 正規表現 改行 含める 含まない

「改行」を見えるようにできるテキストエディターでは
タイプライターでの意味を反映して次のようなマークになっている場合があります。
  • 「LF」は、行(紙)を送るので「↓」
  • 「CR」は、行頭に戻るので「←」
  • 「CRLF」は、両方を組み合わせて「↵」

この仕様なら、タイプライターの「LF」「CR」の意味を知っていれば
改行マークを見るだけで、どの「改行コード」なのかすぐ分かりますね。

正規表現で、「改行」を探すには
「\n」「\r」「\r\n」の3種類に対応できる記述が必要ですが
この3種類すべてをまかなえる「\R」が使える場合もあります。
知っていると非常に便利です。



このエントリーをはてなブックマークに追加




ブログ移転に伴い、コメント受付は終了しました。



記事別の週間アクセス数ランキングです。こちらの記事もぜひ読んでみて下さい。

2008-2019 知らなきゃ絶対損するPCマル秘ワザ  無断転載禁止

ブログパーツ