タグ

正規表現に関するghostbassのブックマーク (9)

  • パフォーマンスを意識して正規表現を書く - Shin x Blog

    正規表現を書く際、どのようなパターンにマッチさせるか、どこをキャプチャするかという視点で記述することはあっても、パフォーマンスを考えて記述するというのはある程度知っている人でなければ忘れがちな視点です。 このエントリでは、バックトラックをメインに正規表現がパフォーマンスに及ぼす挙動について見ていきます。 対象の正規表現エンジン ここでは、従来型 NFA を対象としています。具体的には、PHP の preg_ 関数で利用している PCRE や mb_ereg 関数が利用している鬼車です。PerlRubyPythonJava、.NET でも従来型 NFA を採用しているので、似た挙動となるでしょう。 「従来型 NFA」や「バックトラック」などの用語については、「詳説 正規表現 第3版」のものを用いています。 バックトラックによるマッチ探査 正規表現エンジンでは、指定された文字列が、パ

    パフォーマンスを意識して正規表現を書く - Shin x Blog
    ghostbass
    ghostbass 2016/08/23
    全然気にしてなかった
  • 【正規表現】文字列の否定、ある文字列を含まない

    「abc」という文字列で始まらない ——————— ^(?!abc).+$ ——————— 文頭から文末まで「abc」という文字列を含まない ——————— ^(?!.*abc).+$ ——————— 文字列start~endまでに「abc」という文字列を含まない ——————— start(?:(?!abc).)*?end ——————— 参考URL: http://ynomura.dip.jp/archives/2015/12/post_53.html Aの直後から「abc」という文字列を含まない繰り返し ——————— A((?!abc).)*? ——————— 直後に「ABC」も「XYZ」もこないY ——————— Y(?!(ABC|XYZ)) ——————— ↓↓もう少し詳しく理解する。↓↓ 「(?!」と「)」で文字列を囲む正規表現を否定的先読みという。 これを利用すると、囲まれ

    【正規表現】文字列の否定、ある文字列を含まない
    ghostbass
    ghostbass 2016/04/13
    特定パターンを否定する
  • 電話番号、郵便番号にマッチする真の正規表現 : にぽたん研究所

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

    電話番号、郵便番号にマッチする真の正規表現 : にぽたん研究所
    ghostbass
    ghostbass 2011/07/07
    これを書けるのが凄い。
  • IDEA * IDEA

    ドットインストール代表のライフハックブログ

    IDEA * IDEA
  • 「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ : 404 Blog Not Found

    2009年03月19日18:00 カテゴリLightweight Languages 「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ ああ、まただよ... かなり使えるPHPの正規表現まとめ - IDEA*IDEA 〜 百式管理人のライフハックブログ 〜 正規表現って、プログラミング言語間の差が少ないサブ言語なのに、なぜ「PHP」がつくとダメ正規表現ばかり登場するのか。うんざりだ。 かなり使えるPHPの正規表現まとめ - IDEA*IDEA 〜 百式管理人のライフハックブログ 〜メールアドレスは厳密にチェックしようとするとなかなか難しいのですが、簡単なチェックだったらこれでOKぽいですね。 /^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$

    「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ : 404 Blog Not Found
    ghostbass
    ghostbass 2009/03/19
    元で言ってるのはaddr-specのチェックでしょ。/ C#でかなり厳密なパターンにしたら戻ってこなくなりましたよ
  • ドコモもauはとりあえず"da..me."@を受け取れるようにしとくべし : 404 Blog Not Found

    2007年11月20日12:00 カテゴリiTech ドコモもauはとりあえず"da..me."@を受け取れるようにしとくべし けだし同感なのだけど、これでもメアドを再設定しない人をどうするかという問題は残る。 ドコモもauもいいかげんにメールアドレス設定の仕様を直せ。 とりあえずドコモの携帯で確認したが、2007年11月現在のいまも、***.@docomo.ne.jpとか**....***@docomo.ne.jpといったメールアドレスの設定/取得は可能なままである。 というわけで、解決策を考えてみた。 実はRFC2822の規定では、da.me..@docomo.ne.jpというメールアドレスはNGだが、意外なことに"da.me.."@docomo.ne.jpであればOKなのだ。@の前の部分が""でくくられている場合、RFC2822はそれを特別扱いすることになっているので、こんなトリック

    ドコモもauはとりあえず"da..me."@を受け取れるようにしとくべし : 404 Blog Not Found
    ghostbass
    ghostbass 2007/11/20
    あれドットの連続ってOKなんだっけ?/まともに読んでなかった。ダブルクォートの中であればOK/あれダブルクォート無くても通る気が/ああ↓そういうことか
  • phpspotの件の続報 | 秋元@サイボウズラボ・プログラマー・ブログ

    phpspotの人は正規表現について語らないほうがいいのではを読まれたようで、記事の更新をされたようだが、まさに予想したとおりのphpspotメソッドとなっている。 僕が気づいた範囲での修正箇所は以下のとおり タイトル先頭に「訂正:」を追加 動作確認はしなかったが目視は行なった。目視ではわからなかったという弁明の追加 紹介された元の英語記事へのリンクの削除 ソースコードに取り消し線 以前いろいろ言われた正規表現の解説ページに、注意書きと他サイトの解説へのリンク 問題の指摘はフォームから受付けるという告知 まず、元英文記事へのリンクを消した理由がわからない。元記事が読まれると何か不都合でもあるのだろうか。 元記事の人もコメント欄でいろいろ叩かれているけど、それに答えてスクリプトを手直ししたりしている。一旦何かについて「知っている」と書いたのであれば、それが正しくなるように努力するのが始めた者

    ghostbass
    ghostbass 2007/10/18
    書き手の責任/
  • phpspotの人は正規表現について語らないほうがいいのでは | 秋元@サイボウズラボ・プログラマー・ブログ

    「実用的なPHP用の正規表現x8」というphpspot開発日誌という記事で、 8 Practical PHP Regular Expressions – Web devlopment blogという、今日del.icio.us/popularに出ていた記事の紹介がされている。このサイトの記事はいつもそうだけど、はてなブックマークでも人気で、既に50名を越えるユーザにブックマークされているようだ。 1 メールアドレスチェック $string = "first.last@domain.co.uk"; if (preg_match( '/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/', $string)) { echo "example 3 successf

    ghostbass
    ghostbass 2007/10/17
    間違えているかも<俺(コメントなんか処理してない)とりあえずdとjのユーザーには「メールアドレス変えてくれ」で対処
  • すべての漢字を取り出す正規表現 - totonのブログ

    http://www.unixuser.org/~euske/doc/python/sample.py.html # 日語トークンを切り出すための正規表現。 JP_TOKEN = re.compile(u"[一-龠]+|[ぁ-ん]+|[ァ-ヴ]+|[a-zA-Z0-9]+") http://www.ascii.co.jp/pb/ascii/archive/aftercare/1999.html [亜-煕]はJIS漢字を検出するときに使う正規表現になります。 文中で触れている「一太郎 Lite2」の正規表現はUnicode仕様なので,すべての漢字を検出するには,[一-龠]を使用してください(龠は音読みで「ヤク」,訓読みで「ふえ」,Unicodeでは「9FA0」にあたります)。 追記 ※「すべての漢字を取り出す正規表現」については、id:toton:20051105 に記事を追加しました。

    すべての漢字を取り出す正規表現 - totonのブログ
  • 1