今日は夏の正規表現祭りに参加していますので、自分用にメモします。 ustreamもあります! (Irr|R)egular Expressions / @dankogaiさん 「えろい」のではなく「えらい」 「命賭けるな、コード書け」 正規表現の使い過ぎに注意 $str eq 'XXX' or $str eq 'YYY' を /^(XXX|YYY)$/ に書き直したくなる → やりすぎ もしくはハッシュを使ったり、5.10 でスマートマッチ ~~ を使ったり。 メールアドレスの検証の正規表現 → 適当に書くと不完全。完全に書くとすごく長い Regexp::Common → 便利な正規表現集。ipv4とか。 Regexp::Assemble → alternations (xxx|yyy|zzz) をTRIE最適化する。 ただし、5.10 以降は自動でTRIE最適化してくれる マッチした部分を
※ 二度目の公開というタイトルにしましたが、三度目は予定していません。 2 年ぐらい前に、本邦初公開!電話番号の正規表現というネタで、Regexp::Assemble という CPAN モジュールを紹介したことがありました。 あのモジュールを使うことによって、日本で初めて、電話番号を正規表現で表わすという試みをしてみたのですが、該当エントリに書いた通り、 Number::Phone::JP の正規表現が今日現在でも正しいのかどうか等、未検証部分が異常に多いので、自己責任でお使いくださいw というものでした。 その後、Number::Phone::JP モジュール自体も、更新が面倒臭そうなものなせいか、全然更新されていなかったのですが、何やら今日更新版が出ている模様。 どうも作り直したっぽいかんじ。 で、早速ですが、最新版の正規表現テーブルを用いて、最新版の電話番号にマッチする正規表現を作っ

今後また間違えそうなので丁寧めにメモ。 追記 コメント欄でせいきひょうげんの先読みという機能について教えてもらった。まだ理解できてないけど、たぶんそれを使えばスマートに解決できるのだと思う。あと、例としてかいた式が間違っていたので修正した。 - 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
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [intemplate "__entry.ftlh" atline 3, column 25] - Reached through: #include "__entry.ftlh" [intemplate "entry.ftlh" at
ギークなお姉さんに初めてのトラックバック。 DTIブログ サービス終了のお知らせ の最後にあるfubaさんのnegative wordsを見て猛烈に最適化してみたくなった。 use utf8; use Regexp::Assemble; binmode STDOUT=>'utf8'; @words = split /\|/, 'ヘルプ|へるぷ|help|諦め|苦しい|つらい|希望がない|だめ|ダメ|死|しぬ|しにたい|自殺|たすけて|助けて|働きたくない|やだ|むり|やめたい'; print Regexp::Assemble->new->add(@words)->re; (?-xism:(?:(?:(?:働きたく|希望が)な|つら|苦し)い|(?:たす|助)けて|し(?:にたい|ぬ)|や(?:めたい|だ)|[だ諦]め|help|へるぷ|ヘルプ|むり|ダメ|自殺|死)) Regexp::As
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 -

まずは、Audrey さんが言った Haskell の殺し文句を思い出して頂きたい。 正規表現ベースのパーサはメンテナンスしにくいのに気づいた? Parsec を使って 15分でPerl6 の完全なパーサを書く方法を勉強しましょう。 15分というのは誇張が入っていると思うが、正規表現が保守しにくく、Haskell の Parsec は強力で保守し易いのは事実だ。その理由をPerl と Haskell のコードを示しながら説明してみたいと思う。Perl を愛する方に:この記事はPerl を攻撃するために書いたのではない。Perl を選んだのは、正規表現を広めた言語であり、僕がそれなりにPerl のコードを書けるためである。この記事の目的は、正規表現よりも関数型パーサー(Parsec)の方が優れていると示すことだ。 例題 この記事では例題として、IPv4 アドレスを解析する関数を書く
2009年02月19日08:30 カテゴリLightweight Languagesperl -HTMLをXMLとして扱う そのXML::Liberalが test でこけまくっていたところから旅が始まった。 ゆーすけべー日記: 壊れた Premiere (映像編集ソフト) のプロジェクトファイルが XML::Liberal (Perlモジュール) で直った ということは、なんとかして壊れたプロジェクトファイルを「well formed」な XML にすればいいじゃないのか!と思ったわけ。そこで活躍したのが「XML::Liberal」という miyagawa プロダクトなPerl モジュール。 やりたかったのは、XHTMLでないHTMLを、XML::*なモジュールで扱うこと。例えばXML::LibXMLを使えば、JavaScriptみたいな感覚でDOMを操作できるし、XML::Sim

2009年02月16日22:30 カテゴリ書評/画評/品評 regexp - possessive quantifier (独占的|絶対最大)量指定子とは何か? 入門正規表現 岩谷宏 ちがうよ!バグじゃないよ! 404Blog Not Found:perl - Encode-2.31 Released, 2.30 zapped, regexp bug in 5.10.0 ちょっと調べてみると.... %perl5.10.0 -le 'print "perl" =~ /^\w{1,8}+$/' 1 %perl5.8.8 -le 'print "perl" =~ /^\w{1,8}+$/' Nested quantifiers in regex; marked by <-- HERE in m/^\w{1,8}+ <-- HERE $/ at -eline 1. というわけで、Perl

1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く