タグ

regexpに関するtodogzmのブックマーク (7)

  • 仮想化された日々:vimでの文字数カウント方法 - livedoor Blog(ブログ)

    最近、なるほどと思ったvimの使い方を紹介する。 vimで次のコマンドを実行すると、 :%s/./&/g 編集中のテキストの文字数をカウントする事が出来る。 このコマンドにおける「.」は、正規表現で言うところの、「(改行文字以外の)任意の一文字にマッチ」であり、「&」は「マッチした文字列」を意味するので、結局上記のコマンドは、「各文字を、その文字自身で置換する」ということなる。その過程で、何箇所にマッチしたかが表示されるので、結果、テキストの中身を変えずに文字数のカウントが出来る、という訳だ。 「%」の代わりに、 :10,15s/./&/g のようにすれば、特定の行間でカウントすることも可能。置換における範囲指定のやり方を覚えておけば、そのまま応用できる。 もちろん日語とアルファベットが混在しているテキストでもちゃんと動作する。

  • 水底で思うこと

  • 正規表現を超える--CSVファイル編 - あどけない話

    正規表現を超えるの補足として、CSVファイルを例に挙げて考えてみる。 CSVファイルの定義は、RFC4180にある。 file = record *(CRLF record) [CRLF] record = field *(COMMA field) field = (escaped / non-escaped) escaped = DQUOTE *(TEXTDATA / COMMA / CR / LF / 2DQUOTE) DQUOTE non-escaped = *TEXTDATA TEXTDATA = %x20-21 / %x23-2B / %x2D-7E COMMA = %x2C CRLF = CR LF CR = %x0D LF = %x0A DQUOTE = %x22 これを Haskell の Parsec で書くと、ほとんどそのままの形で実装できる。 import Text.

    正規表現を超える--CSVファイル編 - あどけない話
  • 正規表現を超える - あどけない話

    まずは、Audrey さんが言った Haskell の殺し文句を思い出して頂きたい。 正規表現ベースのパーサはメンテナンスしにくいのに気づいた? Parsec を使って 15分で Perl6 の完全なパーサを書く方法を勉強しましょう。 15分というのは誇張が入っていると思うが、正規表現が保守しにくく、Haskell の Parsec は強力で保守し易いのは事実だ。その理由を Perl と Haskell のコードを示しながら説明してみたいと思う。 Perl を愛する方に:この記事は Perl を攻撃するために書いたのではない。Perl を選んだのは、正規表現を広めた言語であり、僕がそれなりに Perl のコードを書けるためである。この記事の目的は、正規表現よりも関数型パーサー(Parsec)の方が優れていると示すことだ。 例題 この記事では例題として、IPv4 アドレスを解析する関数を書く

    正規表現を超える - あどけない話
  • 404 Blog Not Found:perl - Regexp::Assembleのススメ

    2007年04月19日15:00 カテゴリLightweight Languages perl - Regexp::Assembleのススメ というわけで、Regexp::Assembleのご紹介。 PERL HACKS(日語版) [英語版] odz buffer - それ Regexp::Assembleん?ループ云々を抜きにして、こういうのは Regexp::Assemble の出番じゃないの? すでにPerl Hackers御用達のモジュールとなっていますが、まだ知らない方もいらっしゃるかも知れないので。 何をするモジュールか、といえば、以下を見れば一目瞭然でしょう。 Regexp::Assemble - Assemble multiple Regular Expressions into a single RE - search.cpan.org use Regexp::Asse

    404 Blog Not Found:perl - Regexp::Assembleのススメ
  • Regexp - Regexp::Commonを引くAPI : 404 Blog Not Found

    2007年10月17日17:00 カテゴリLightweight Languages Regexp - Regexp::Commonを引くAPI Mastering Regular Expression Jeffrey Friedl [邦訳: 詳説 正規表現] そういうことを防ぐにはどうしたらよいか、と考えて作りました。 秋元@サイボウズラボ・プログラマー・ブログ: phpspotの人は正規表現について語らないほうがいいのでは この人、以前にも正規表現のいいかげんな記事を書いていろいろ突っ込まれている。まずは実例から。 Server Source 何をしているかというと、Regexp::CommonをJSONPで引いているのです。このRegexp::Commonは、実際に使用され配布されている正規表現集としては最も実績のあるものの一つですが、そのままではPerlでしか使えないのでこうしてみ

    Regexp - Regexp::Commonを引くAPI : 404 Blog Not Found
    todogzm
    todogzm 2007/10/19
    IPV4のチェックなんて、まずは最大3桁の数値4つがピリオド区切りであることだけは正規表現で確認し、各数値が0以上256未満であることをPGで確認するのが楽なんじゃね?とオモタ。数値の意味まで正規表現てのは苦しい。
  • 正規表現メモ

    \x{} \pは後続する名前が表すクラス(プロパティ、スクリプト、ブロック)に属する文字にマッチし、 \Pは後続する名前のクラスに属さない文字にマッチします。 クラスの名前が一文字のときはブレースを省略できます。 クラス名の前に^を置くことにより否定形の指定を行うことも可能です。 Perl 5.8 での変更点 Perl5.8以降(5.6でも使えたようですが)では \pや\Pで始まるプロパティ指定に標準Unicode属性を使うこともできます。 詳しくは perlunicode perlunicode - Perl における Unicode サポート を参照してください。 日語による説明が Unicodestandard にもあります。 Perl 5.8以降ではユーザーが任意のプロパティを作成することができます (IsまたはInを必ず前置)。 詳しくは perlunicode perluni

  • 1