タグ

regexpとperlに関するlesamoureusesのブックマーク (8)

  • Perl で簡単にパーザを書く - tokuhirom's blog

    パーザを書こうという場合、Parse::RecDecsent のようなモジュールを使うのが一般的だが、Perl5 の正規表現は強力すぎるため、そんなものに頼らなくても超絶簡単にパーザを実装することが可能だ。 以下に、四則演算のパーザを示す。 use 5.018000; package Calc { use Carp (); sub parse { local $_ = $_[1]; _parse_expr(); } sub err { my ($msg) = @_; my $ret = join('', $_, "\n", (" " x pos()) . "^\n", $msg, "\n", ); Carp::croak $ret; } sub _parse_expr { my @nodes; until (/\G\s*\z/gc) { my $m = _parse_add() or do

    lesamoureuses
    lesamoureuses 2014/01/22
    \Gが何かわからなかったけどperlretutにあった。なるほど "\G アンカーは直前のマッチングで残った部分にマッチングします" http://perldoc.jp/docs/perl/5.18.1/perlretut.pod
  • perl5180delta - perl v5.18.0 での変更点 - perldoc.jp

    This document describes differences between the v5.16.0 release and the v5.18.0 release.

    lesamoureuses
    lesamoureuses 2014/01/05
    \cK ってなんだろうと思ったら垂直タブなのか
  • perlreref

    名前 説明 演算子 構文 エスケープシーケンス キャラクタクラス アンカー 量指定子 拡張構造(EXTENDED CONSTRUCTS) 変数 関数 用語 Titlecase AUTHOR SEE ALSO THANKS 名前 perlreref - Perl の正規表現のリファレンス 説明 ドキュメントは、Perl の正規表現のクイックリファレンスです。 完全な情報は、perlre と perlop、また、ドキュメントの ”SEE ALSO セクションを参照してください。 演算子 =~ 正規表現が適用される変数を決定します。省略された 場合には、$_ が使われます。 $var =~ /foo/; !~ 正規表現が適用される変数を決定し、マッチの結果を反転します。 マッチが成功すれば偽を返し、失敗すれば真を返します。 $var !~ /foo/; m/pattern/igmsoxc パ

  • regexp - ^$でなくて\A\zを使おう : 404 Blog Not Found

    2009年03月09日00:30 カテゴリLightweight LanguagesTips regexp - ^$でなくて\A\zを使おう まずは回答から。 正規表現で「制御文字以外」のチェック - ockeghem(徳丸浩)の日記 文字エンコーディングの妥当姓 制御文字(\x00〜\x1f, \x7f)のチェック 文字列長のチェック このうち後ろ二つを正規表現として書くにはどうすればいいかを考えていました。 こういう時には、「全文字がOKならOK」と考えるのではなく、「一文字でもNGならNG」と考えると楽になります。それは「スペースと非制御文字以外」なのですから、/[^ \S]/が求めていた正規表現で、=~ではなく!~が使うべき演算子ということになります。全角スペースもOKにしたければ、/[^ \x{3000}\S]/。[追記参照] [Run via Codepad] #!perl -

    regexp - ^$でなくて\A\zを使おう : 404 Blog Not Found
  • Perl正規表現雑技

    このページは Perl5.6 を対象としています. perl スクリプトは EUC-JP で書かれることを想定しています. このページは 正規表現メーリングリスト を参考に,私が独自にメモとしてまとめたものです. このページの正規表現やスクリプトについての詳しい説明, わかりやすい説明はおそらくできません. このページに書かれているスクリプトは, 個人の責任において実行してください. このページに書かれているスクリプトの 利用・改造は自由 です. その際はどこかにこのページの URI( http://www.din.or.jp/~ohzaki/regex.htm )を参考として記述していただければ幸いです(任意). ご意見・ご感想・ご要望などは にお願いします.こう書いた方がいい, 動かん,わからん,バグってる,これ書け,などなどお待ちしています. このページへの リンクは自由 に張ってく

  • use utf8なら\sは全角スペースもmatchする : blog.nomadscafe.jp

    use utf8なら\sは全角スペースもmatchする Femoで全角スペースでもTagのsplitができるように、と調べているのですが、 use utf8; をしている場合、\sは全角スペースにもmatchするようです。初めて気がついた。 #!/usr/bin/perl use strict; use warnings; use utf8; binmode STDOUT => ":utf8"; my $str ="全角 ス ペ ー ス が入った テキ\tス\nト"; print join ",",split /\s/,$str; の出力は 全角,ス,ペ,ー,ス,が入った,テキ,ス,ト となります。 perlretut - Perl の正規表現のチュートリアルによると、これも知らなかったのですが、 \sは空白キャラクタで [\ \t\r\n\f]を表します なのですね。 utf8の場合は、

    lesamoureuses
    lesamoureuses 2008/08/29
    /\s+/でヒットしないなぁと思ったら+のせいだった/[\s]+/で行けた
  • 404 Blog Not Found:perl - 勝手に添削 - 40行で作るPerl用テンプレートエンジン

    2007年10月30日20:00 カテゴリLightweight Languages perl - 勝手に添削 - 40行で作るPerl用テンプレートエンジン 久々の勝手に添削。今回はこちら。 40行で作るPerl用テンプレートエンジン 正規表現がらみなので、Perl以外でも有用。 添削箇所は、こちら。 40行で作るPerl用テンプレートエンジン sub convert { return unless defined(my $str = shift); $str =~ s{&amp;}{&amp;}gso; $str =~ s{<}{&lt;}gso; $str =~ s{>}{&gt;}gso; $str =~ s{\"}{&quot;}gso; $str; } これの最初のsubstitutionが&amp;ではなくて&ではないかというのはさておき、こういった場合、何度も正規表現をかけ

    404 Blog Not Found:perl - 勝手に添削 - 40行で作るPerl用テンプレートエンジン
    lesamoureuses
    lesamoureuses 2007/10/31
    htmlタグのエスケープは文字クラスとhashでやるのがいい
  • Perlメモ

    複数のプロセスでロック状態が異常であると判断し,そのうちの 1つがロックを解除したことにより,別のプロセスがロックしたにもか かわらず,先ほどロック状態が異常であると判断したプロセスによってこの正常なロッ クを解除されてしまう可能性があります. この方法の問題点は,異常なロック状態を解除する操作が正常なロック状態をも 解除できてしまうことにあります.逆に言えば,異常なロック状態を解除する操作に よって正常なロック状態を解除できなければ問題ないわけです.そのためにはどうす ればよいのか? 答えはロック状態が常に変化していけば よいということです.そして,これを実現するのに都合がよいのが rename による方法になります. 最初のスクリプトで説明しますと,ロックファイルが lockfile という 名前のときがロックが解除されている状態で,lockfile987654321 のよう に後ろに

  • 1