改行を表す正規表現とは?OS別に改行を基本から解説します!
  • facebookページ
  • twitterページ
  • 2018.10.03

    改行を表す正規表現とは?OS別に改行を基本から解説します!

    この記事では、正規表現で改行を表す方法について解説します。改行の正規表現を知っておくと、プログラムで表示する文字列に改行を入れる場合や、大量データの改行を一発で置換処理したい場合等に役に立ちます。改行を表す正規表現はOSによって異なりますので、本記事ではそれぞれの改行の意味合いも含めて解説していきます。

    正規表現とは

    正規表現は、特定の文字列のパターンを、ある記号を使って一つの文字列で表記するための方法です。正規表現では、文字列の種類や位置、繰り返しを「メタ文字」という特殊な記号で表します。メタ文字には、例えば下記のようなものがあります。

    • ^:行頭の位置
    • $:行末の位置
    • \:エスケープ(特殊動作を無効にさせること。)
    • *:直前のパターンが0回以上続く
    • +:直前のパターンが1回以上続く

    行頭の位置を表すメタ文字は「^」なので、「^a」と記述する事でaが先頭に来ることを表現することができます。さらに数字は「[0-9]」または「\d」で表され、「^a\d」と正規表現で記述した場合は、aが先頭でその後に数字が1文字続くことを示します。この場合、a0、a1、a2、a3、a4、a5、a6、a7、a8、a9の全てを「^a\d」という一つの文字列で表現することになります。

    改行を表す正規表現

    コンピュータ上での改行には「CR(キャリッジリターン)」「LF(ラインフィールド)」「CRLF」といった複数種類の表現が存在し、テキストファイルごとに使用されている改行コードはOSやアプリケーションなどの環境により異なります。これは改行をあらわす正規表現についても同様で、それぞれの改行コードによって正規表現の表記方法も異なります。

    Windowsで動作するアプリしか作る必要がない場合はそれほど意識する必要はありませんが、Linuxで動作するサーバー系のプログラムや複数のOSで改行を処理する際は、OS間での改行コードの違いを意識しておきましょう。

    それでは、OSごとで標準で使用されている改行コードと正規表現での表現方法を見ていきましょう。

    Mac

    バージョン9までのMac系OSでの標準の改行コードは「CR(キャリッジリターン)」です。MaxOS Xでは次項のUnixと同様になりますので、そちらを参照ください。CRとは「復帰(カーソルを左端に移す)」を意味し、サクラエディタや秀丸エディタ等のテキストエディタでは「←」と表記されます。CRを正規表現で表すと、「\r」となります。

    UNIX

    UNIX系のOSやMacOS Xで標準で使われいている改行コードは「LF(ラインフィールド)」です。LFとは「改行(カーソルを次の行に移す)」を意味し、テキストエディタでは「↓」と表記されます。LFを正規表現で表すと、「\n」となります。

    Windows

    Windows系のOSでは「CR+LF」が標準の改行コードとして使われています。CRLFとはCRとLFの融合形を意味し、テキストエディタでは「↵」と表記されます。カーソルを左端に移して次の行に移すという意味合いがあります。CR+LFを正規表現で表すと、「\r\n」となります。

    こんなときはどうする?

    本章では、文字列データから改行を処理する場合等に使う、改行を含む文字列にマッチする正規表現の表記について解説します。

    改行を削除したい

    プログラムで改行を削除する場合は、正規表現を使って改行を空文字に置換します。前述のように、OSによって改行の正規表現は異なりますので、テキストを生成するOSごとの改行にしたがって置換の対象を検索する必要があります。
    サクラエディタ等、正規表現での検索が出来るエディタでテキストを直接置換する場合は、まず取り扱うテキストの改行の種類を確認します。例えば、サクラエディタの場合の確認は下記のようになります。

    上の例の場合、Windowsで作られた文章のため、改行マークが「↵」となっています。また、サクラエディタの場合はエディタの下部に「CRLF」のように文字コードが表示されています。
    ここでの改行コードはCR+LFですので、置換ツールで置換前を「\r\n」に、置換後を「」(空文字。何も入れない)にして「置換」を押します。サクラエディタの検索や置換で正規表現を使うには、正規表現にチェックを入れます。

    上の例の場合、下のように改行が一括削除されます。

    改行コードを含む全ての文字列を表現したい

    改行コードを含む全ての文字列は、「\s」または「\S」の集合(or)で表すことができます。\sはスペースやタブなどの任意の空白文字を示し、\Sは空白文字以外の任意の文字を示します。
    任意の一文字ずつを「or」で表現するには、文字クラスといわれる表記方法により「[]」で囲むことで示すことが出来ます。あるいは、orを示す「|(パイプ)」で任意の文字同士をつなぐことも出来ます。
    よって、改行コードを含む全ての文字列は「[\s\S]」または「\s|\S」のように表すことができます。

    改行を越えて複数行にまたがる文字列をマッチさせたい

    正規表現を扱う言語やツールの中には、改行を超えて複数行にまたがる文字列も検索出来るよう、「シングルラインモード」と「マルチラインモード」の2つのモードを用意している場合があります。2つのモードでは、「.」(改行を除く全て)と「^」(行頭の位置)「$」(行末の位置)の扱いが変わります。

    マルチラインモードの場合

    • ^:行頭の位置
    • $:行末の位置
    • .:改行以外の任意の文字

    シングルラインモードの場合

    • ^:改行を含む文字列全体の先頭の位置
    • $:改行を含む文字列全体の末尾の位置
    • .:改行を含む任意の文字

    サクラエディタでは常にマルチラインモードになっており、改行を超えて複数行にまたがる文字列をマッチさせることは出来ませんが、扱う言語やツールによっては、このモードの切り替え方法が用意されている場合がありますので、確認してみてください。

    まとめ

    本記事では、OSごとに異なる改行の正規表現と、改行コードの処理を例を交えて解説しました。改行のそれぞれの正規表現は、CRでは「\r」、LFでは「\n」、CR+LFでは「\r\n」になります。改行を正規表現で検索する事で、大量データ中の全ての改行の一発置換や改行をまたいでの検索等を楽に行うことが出来ます。OSによる表現の違いを意識して、間違えた処理をしないように注意しましょう。


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料10万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE