タグ

regexpとtipsに関するa2ikmのブックマーク (4)

  • 非 ASCII 文字を含む行を検出 - mooz deceives you

    ファイル中にある「非 ASCII 文字」を含む行を検出したければ、次のコマンドで。 grep '[^ -~]' file 仕組みは ASCII文字コード - IT用語辞典 を見ると一目瞭然。 まずホワイトスペースからチルダまでを ASCII 文字とみなし、 [a-z] のノリで [ -~] とする。これで ASCII 文字からなる文にマッチする正規表現が出来る。 今回は「非 ASCII 文字」が欲しかったので ^ をつけて条件を逆転させ、完成。 ソースコード中からマルチバイト文字を取り除きたいときなどに便利。コメントを全部英語化したいときとかね。 追記 Emacs 使いの人なら M-x rgrep でこの正規表現を使うと、プロジェクトのマルチバイト文字を一括検索出来て便利。

    非 ASCII 文字を含む行を検出 - mooz deceives you
    a2ikm
    a2ikm 2015/02/25
    grep '[^ -~]' file
  • Unicodeブロック/スクリプトを使うと日本語の正規表現に便利 - There's an echo in my head

    Oniguruma(CRuby 1.9系組み込み)とOnigumo(CRuby 2.0系組み込み)で利用できるUnicodeブロックおよびUnicodeスクリプトを使うと、日語(というか多バイトの文字列)に対する正規表現が手軽に書ける。 例えば\p{N}は全角半角にかかわらずアラビア数字にマッチする。Unicode 6.0だと四角い囲いのついた数字は数字と囲い記号の結合で表わされるけども、この数字の部分にもマッチする。 /\p{N}/ =~ "1" #=> 0 /\p{N}/ =~ "1" #=> 0 /\p{N}/ =~ "\u{0030 20E3}" #=> 0 他にもアルファベットだと\p{Alphabetic}、小文字だけなら\p{Lowercase}とか。なにが使えるかはOnigurumaのREADMEのCharacter Propertyとか、OnigumoのUnicodeP

    Unicodeブロック/スクリプトを使うと日本語の正規表現に便利 - There's an echo in my head
  • Vimの正規表現は戦闘用 - Humanity

    タイトルは釣りです。 LingrでVimの正規表現の話が出たので、 ノリで今言い忘れたこととか書いてます。 Vimの正規表現では+とか(が特別な文字じゃありません。 コマンドラインでさっと検索する用に最適化されてるという印象を受けます。 たとえば :%s/eskk#\zsfunc\ze(/something_great/g みたいにして「eskk#func(」を「eskk#something_great(」に置き換えることができます。 グループ化するにはどうすればいいかというと「\(fo\+\)」のようにバックスラッシュをつけます。 参照する必要がないなら「\%(fo\+\)」。Perlで言うと「(?:fo+)」ですね。 このようにグループ化しようとすると沢山エスケープしなきゃならないですが、 コマンドラインでさっと検索する分にはこの仕様はけっこう楽だったりします。 あと\zsと\zeが便

    Vimの正規表現は戦闘用 - Humanity
    a2ikm
    a2ikm 2013/02/21
    \zsと\ze
  • feena.jp

    a2ikm
    a2ikm 2010/11/10
    /¥w/は多バイトアルファベットにマッチしてしまう、それが嫌なら/nオプションを付ける
  • 1