タグ

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

  • Unicodeプロパティを使ったPerl正規表現 - Hatena Developer Blog

    こんにちは、Webアプリケーションエンジニアのid:nanto_viです。 Webアプリケーションを作っていると、「全角文字と半角文字を統一したい」「ユーザーの入力から漢字を抜き出したい」といったテキスト処理を行う場面にたびたび遭遇します。はてなではWebアプリケーションのサーバー側プログラミング言語としてPerlを多く使っていますが、PerlならこのようなときにUnicodeプロパティを用いた正規表現パターンで柔軟な処理が可能です。 Unicodeプロパティ 現在、ほとんどのプラットフォームで採用されている文字集合がUnicodeです。Unicodeでは文字だけでなくその文字の様々な特性(プロパティ)も定められており、テキスト処理の基礎情報として活用できます。 Perl正規表現でのUnicodeプロパティの利用 Perlの正規表現では、\p{Property_Name=Value}のよう

    Unicodeプロパティを使ったPerl正規表現 - Hatena Developer Blog
  • gist:ffc7edd26f609af54c46

  • Shibuya.pm #16 で発表してきました - Islands in the byte stream (legacy)

    Shibuya.pm Technical Talk #16 夏の正規表現祭りにスピーカーとして参加してきました。mixiさん会場提供ありがとうございました! 私は「Hello, re::engine!」と題してPerlのプラガブル正規表現エンジンについて発表しました。「正規表現」のイントネーションでツッコミを受けたり、スライドが壊れていてライブコミットするハメになったりなどハプニングもありましたが、大いに楽しみました! Hello, re::engine! これはもともと How to Implement World Fastest Grep の [twitter:@shinya8282]くんをShibuya.pmに呼んで正規表現祭りをしたいね、と話していたとき思いついたネタです。つまり、Perlの正規表現エンジンはプラガブルなので、高速な正規表現エンジンがあるならぜひPerlからも使える

    Shibuya.pm #16 で発表してきました - Islands in the byte stream (legacy)
    bayashi_net
    bayashi_net 2011/07/10
    もってるよねw 乙です! 「「正規表現」のイントネーションでツッコミを受けたり、スライドが壊れていてライブコミットするハメになったりなどハプニングもありましたが、大いに楽しみました!」
  • 電話番号、郵便番号にマッチする真の正規表現 : にぽたん研究所

    Shibuya.pm #16 「夏の正規表現祭り」で、正規表現のお話をさせていただきました。 まぁ、「電話番号にマッチする正規表現」とか「郵便番号にマッチする正規表現」とかよく書かれてるけど、「どれもこれも手緩いよね」って話。 あ、だいぶはしょったかな。 とりあえずスライドに書いたので、発表をご覧になってない方はスライドからご覧ください。 ふと見返すと、このブログで電話番号の正規表現を公表するのは 3 度目ですが、あれからだいぶ経ってますね。 今ではもっと厳密な正規表現を作っています。 そして、Number::Phone::JP に続き、Number::ZipCode::JP という酔狂なモジュールが公開された記念で、郵便番号にマッチする正規表現を今回初めて公開しますが、そもそもここまで厳密な正規表現が公開されること自体、邦初公開ってヤツでしょう。 Shibuya.pm でも言いましたが

    電話番号、郵便番号にマッチする真の正規表現 : にぽたん研究所
    bayashi_net
    bayashi_net 2011/07/07
    「どれもこれも手緩いよね」
  • [Perl]UTF8-flagged strings affects regexps with the "i" modifier - Islands in the byte stream (legacy)

    HTML::FillInForm::Liteの使いどころという記事で,HTML::FillInForm::Liteが遅いということが取り上げられていた。 試しに記事内のベンチマークを行ったところ,確かに遅い。 # HTML::FillInForm 1.06 Benchmark: HTML::FillInForm vs. HTML::FillInForm::Lite Rate fillinall_lite fillinall fillinpart_lite fillinpart fillinall_lite 570/s -- -52% -76% -78% fillinall 1199/s 110% -- -49% -54% fillinpart_lite 2349/s 312% 96% -- -9% fillinpart 2595/s 355% 116% 10% --ところで,このベンチマー

    [Perl]UTF8-flagged strings affects regexps with the "i" modifier - Islands in the byte stream (legacy)
  • 本邦初公開!電話番号の正規表現 - にぽたん研究所

    近年「邦初公開」って表現、あんま使わないすね。。。 さて、Regexp::Assemble という、正規表現愛をものすごく感じるモジュールを見付けました。 愛がある上に、ものすごく便利です。 use strict; use Regexp::Assemble; my $ra = Regexp::Assemble->new; $ra->add('a'); $ra->add('b'); print $ra->re, "\n"; みたいなのを書くと、 (?-xism:[ab]) という結果になる。 要は、add() メソッドに渡した文字列や正規表現の全てにマッチする正規表現を作ってくれるスグレモノ。 (?-xism: 〜 ) というのは前にも書きましたが quote regex 演算子を使ったために付加される「クロイスタ」です。 この結果に対しては、クロイスタは別に無くても構わないので、実質 [

    本邦初公開!電話番号の正規表現 - にぽたん研究所
  • 非破壊な s/// のススメ

    正規表現の置換でときどき困るのは、元の文字列が変更されてしまうことです。そのため、たとえば文字列を URI escape する際には、以下のように別変数にコピーした上で、正規表現を適用することになります。 my $escaped = $search_str; $escaped =~ s/([^0-9A-Za-z_.!~*'()-])/'%' . uc(unpack('H2', $1))/eg; my $url = "http://example.com/search?q=$escaped"; 以前、この点がめんどくさいなーとブログに書いたところ、kazeburo さん他に以下のようなテクニックを教えていただきました。 use List::MoreUtils qw(apply); my $url = 'http://example.com/search?q=' . apply { s/([^

  • Kazuho@Cybozu Labs: Perl の正規表現が破壊的でイヤだなと思った件

    « Japanize インストール済の Safari で apple.com/downloads にアクセスすると落ちる件 | メイン | swifty - 高速な共有メモリキャッシュ » 2007年07月18日 Perl の正規表現が破壊的でイヤだなと思った件 いちいち変数定義して、 my $s = "Hello, World\n"; $s =~ s/Hello/Goodbye/; print $s; とか書くのにあきてきたので、 sub ndes (&@) { my $code = shift; my @a = map { local $_ = $_; $code->(); $_; } @_; wantarray ? @a : $a[0]; } と、まとめてみました。これで、 print ndes { s/Hello/Goodbye/ } "Hello, World\n" とするだけで

  • 1