ゆとり理系のgdgdブログ

.com.comです。 ここでは自分の日々の思いや出来事、知識などを紹介していくブログです。

02<< 12345678910111213141516171819202122232425262728293031 >>04 管理画面

プロフィール

.com.com
Since 10/04/10

主な活動内容

  • YouTube実況者(.com.com名義)
  • YouTube実況者wiki管理人(2代目)
  • Visitors

    あなたは人目の訪問者です。 (Since 10/09/09 19:15)

    活動場所リンク

    YouTube 実況メイン
    Stickam 生配信メイン
    Twitter
    Twitter(チャンネル用)
    Justin.tv
    Ustream

    ブロとも申請フォーム

    ブログリンク

    ※★は相互リンクです。
    ※●はYouTube実況者以外のオススメブログです。(●がなければ実況者です。)
    ※*はFC2ブログでないブログ(Amebloなど)です。
    ※◆はこちらをご覧ください。
    ※2012年以降更新がないブログは最下部にまとめて畳んでいます。

    Channel Info

    チャンネルの最新情報はこちら!

    スポンサーサイト

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    改行コードが混在したときに特定の改行コードを見つける

    ある時、改行コードが2種類以上混在しているから片方を置き換えるなんてことをやっていました。
    その時のメモです。



    まず、改行コードですが、改行コードは3種類存在します。

    種類正規表現使用されている場所
    CR\rMacなど
    LF\nUnix系など
    CRLF\r\nWindowsなど

    何で3種類あるのかはググってください。

    プログラミングの入門とかでCをやったとき、"Hello world!\n"とか見たかもしれませんが、この\nが改行コードです。
    この場合、Unixでは正常に改行されますが、Macだと改行されないし、Windowsになると変な記号が表示されて改行されないという事態になります。

    普通はファイルの編集をした時に別のOSでファイルを開くというのはあまりないですし、ファイルの編集を行う時はテキストエディタなどが改行コードを自動で変えてくれますが、普段はあまり意識しません。
    ただ、何かのはずみで改行コードが複数種類入ってしまうことがあります。

    今回こういうファイルを200個くらい取り扱ったので、面倒だということでサクラエディタで変換していました。
    サクラエディタではVer.2.2.0.0以降にGREP置換という機能があり、これで複数ファイルの改行コードを置き換えていました。
    ところが、サクラエディタの検索機能には行をまたいでいる場合に検索が引っかからないというトラップがあります。
    つまり、Windows用の2行分の改行\r\n\r\nとかMac用の2行分の改行\r\rが引っかかってくれないのです。

    そこで、サクラエディタでも使える、複数種類の改行コードが混在しても、特定の改行コードだけ検索する方法・置換する方法をまとめます。



    ●CRを検索する場合

    検索
    置換前:\r(?!\n)
    否定先読みを使います。
    これは、LFが後ろに来ないCRを探す、という意味です。

    LFに置換
    置換後:\n
    そのままです。

    CRLFに置換
    置換後:\r\n
    そのままです。

    ●LFを検索する場合

    検索
    置換前:^([^\r]*)\n
    前にCRが来ないLFを検索し、そのLFだけを取り出すことは正規表現でできません。
    そのため、これだけ違う方法を用います。
    ([^\r]*)は0文字以上のCR以外の文字列、それに\nを付けると、CRLFで改行している部分をはじきます。
    そして、先頭に^を付けることで、\nも検出しないようにしています。

    CRに置換
    置換後:$1\r
    $1はここでは([^\r]*)を指します。
    つまり、LF以外の残り文字を残して、LFをCRに置き換える、ということになります。

    CRLFに置換
    置換後:$1\r\n
    上とほぼ同じです。

    ●CRLFを検索する場合

    検索
    置換前:\r\n
    ひねりもなくそのままの形です。
    この形でCRやLFが引っ掛かることはありません。

    CRに置換
    置換後:\r
    これもそのまま。

    CRLFに置換
    置換後:\n
    そのままです。



    ということで、LFだけ対処が少し特殊ですが、こんな感じで検索・置換が出来ます。
    スポンサーサイト

     | ホーム | 

    検索フォーム

    記事クイックジャンプ

    QRコード

    QR
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。