タグ

regexとperlに関するfoosinのブックマーク (9)

  • Perl-正規表現 - Wikibooks

    Perlは強力な 正規表現 をサポートしています。正規表現とは、大まかにいうと、検索の機能を高度化しやすくしたものです。Perl以外のJavaJavaSciptやPHPなども正規表現をサポートしていますが、Perlは古くから正規表現を格的にサポートしています。 また、Perlの拡張正規表現は、Perl Compatible Regular Expressions( PCRE ) としてPerlの外でも使うことができるため、正規表現のディファクトスタンダードの1つとなっています。 二項演算子 =~ は、左辺のスカラー式を右辺のパターンマッチに拘束します。 正規表現に関する操作では、デフォルトで $_ という文字列を検索したり変更したりします。 この演算子は、そのような操作を他の文字列に対して行うようにします。 右辺は、検索パターン (//)、置換 (s///)、または変換 (tr///)

  • {perl,ruby} -nle 'print if /start/../end/' : 404 Blog Not Found

    2006年12月22日19:00 カテゴリLightweight Languages {perl,ruby} -nle 'print if /start/../end/' アルファギークでも知らなかったというのは、不思議でもあり当然のようでもあり。 naoyaグループ - naoyaの日記 - if /regexp/../regexp/ Perl で正規表現を .. すると、その間に含まれる文字列という意味でマッチさせられる。 % w3m -dump_source http://www.yahoo.com/ | perl -nle 'print if /^<style/../<\/style>/' とするとこれ、実に由緒正しい使い方で、たしかまだperlがhashすらサポートしていない頃からあったと記憶しています。なにしろsed/awkが起源ですから。 NAME operator - se

    {perl,ruby} -nle 'print if /start/../end/' : 404 Blog Not Found
  • 正規表現でマッチした部分のキャプチャ ($1,$2とか) について勘違いをしていた - @kyanny's blog

    今後また間違えそうなので丁寧めにメモ。 追記 コメント欄でせいきひょうげんの先読みという機能について教えてもらった。まだ理解できてないけど、たぶんそれを使えばスマートに解決できるのだと思う。あと、例としてかいた式が間違っていたので修正した。 - my ($a, $b) = "/b/x/2" =~ m{^(?:/(a)/x/(1))|(?:/(b)/x/(2))}; のようなコードを書いて、 $a も $b も undef になるのでしばらく悩んでいたけど、この書き方だと問題があった。 以下のようなコードを書いてみたら、意味がわかった。 #!/usr/bin/perl use strict; use Data::Dumper; my $a = q{/a/x/1}; my $b = q{/b/x/2}; my $c = q{/c/x/3}; for my $x ($a, $b, $c) { i

    正規表現でマッチした部分のキャプチャ ($1,$2とか) について勘違いをしていた - @kyanny's blog
  • Perlメモ

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

    foosin
    foosin 2009/03/20
    メールアドレスの正規表現。わらた
  • Shift-JISテキストを正しく扱う perl 日本語パターンマッチ正規表現 の問題と落とし穴

    最近の更新履歴 2006-10-28: 「Shift-JISの漢字を含むファイル名/パス名」について若干追記。 2005-03-26: 「最初に」中、XML日語プロファイル第2版に基づき、若干追記。 2005-03-09: 「最初に」中、文章を若干修正。 2003-06-24: Shift-JISの漢字を含むファイル名/パス名 2003-05-31: 「最初に」中、「シフトJIS」などの表記について。 2003-05-24: CP932重複定義文字の変換 2002-08-30: Perl 5.8.0 について。 2002-01-17: 長い文字列に対する正規表現検索 2001-12-15: ShiftJIS::Collate が overrideCJK パラメータを廃止したことに伴う 日語文字列を並び替えるの書き換え。 最初に 日語の文字コードにはいくつかのものが使われています。ある

    foosin
    foosin 2008/12/03
    shift jis,sjisで正規表現のとき
  • Site is undergoing maintenance

    Site will be available soon. Thank you for your patience!

  • 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用テンプレートエンジン
  • 正規表現愛

    弊社には、アンチ正規表現の人がいますが、私は熱烈な正規表現 Lover である。 大崎氏の「Perl 正規表現雑技」とかは、正規表現 Lover 垂涎のコンテンツとして、ブラウザのリンクバーに入れている程である (嘘)。 正規表現は覚えてモノにすれば、シアワセになれる素晴らしい仕組みなのです。 昨日、Shibuya.pm のテクニカルトークに行った際「はてなでは XML 系の CPAN モジュールはあまり使っておらず、XML の parse には殆んど正規表現を使用している」という話が出てきて、嬉しさのあまり身震いした。 parser を書くのが面倒臭くて「XML::Simple 最強」とかホザいた自分に対しての自戒と、弊社の Chief Regular Expressioner という肩書を持つ (自称) 立場の人間として、たまには、正規表現ゴリゴリなネタでも書いてみようかなと思いますた

    正規表現愛
  • 「Perlで関数呼び出しする正規表現」を勝手に添削 - ヒルズで働く@robarioの技ログ

    user.home-info.postal.nameというのを、userHomeInfoPostalNameという感じに一括変換したいなっと思い考える。 $ perl -pe 'sub convert{uc $1;};s/\.([a-z])/&convert($1)/eg;s/-([a-z])/&convert($1)/eg;' という感じでいいみたい。 プログラム中に2箇所出てくる正規表現は qr/\.([a-z])/ qr/-([a-z])/ と、ほとんど同じなので qr/[.-]([a-z])/ のようにまとめることができます。 文字クラス([...])の中では、"."は特別な意味を持たないのでエスケープは不要です。 また、eオプションは置換文字列部分に処理を直接書けるので、(何か事情があるのでなければ)サブルーチンを用意しなくても大丈夫です。 なので、 % perl -pe 's/

    「Perlで関数呼び出しする正規表現」を勝手に添削 - ヒルズで働く@robarioの技ログ
  • 1