タグ

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

  • 正規表現の先読み・後読み

    正規表現の「先読み(lookahead)」「後読み(lookbehind)」について紹介します。 正規表現の「位置へのマッチ」 正規表現は、文字列のパターンマッチに使われます。たとえば [0-9]{4} は数字4つが並ぶ文字列にマッチする表現です。 多くの正規表現は「文字列」にマッチしますが、「文字列」ではなく「位置」にマッチする表現があります。これは、アンカーと呼ばれます。また、長さ0の文字列にマッチすると考えて、ゼロ幅アサーションとも呼ばれます。 アンカーの例として、^(先頭)$(末尾)\b(単語の境界)などがあります。 この例では、cat にはマッチします。一方、category や concat は cat を含みますが前後が単語の境界になっていないためマッチしません。 先読み 先読み(lookahead)は、位置にマッチする記法の一種です。位置の指定に正規表現を使います。(?=

    正規表現の先読み・後読み
  • なるべく短い正規表現で住所を「都道府県/市区町村/それ以降」に分けるエクストリームスポーツ - Qiita

    rex = /ごにょごにょ/ p "東京都文京区後楽1丁目3−61".match(rex).captures #=> ["東京都", "文京区", "後楽1丁目3−61"] みたいなやつ。なるべく短く。 実用性? そんなもの、うちにはないよ。 TL;DR 「読むのめんどくさい」という人用に最初に最終結果を置いておきます (...??[都道府県])((?:旭川|伊達|石狩|盛岡|奥州|田村|南相馬|那須塩原|東村山|武蔵村山|羽村|十日町|上越|富山|野々市|大町|蒲郡|四日市|姫路|大和郡山|廿日市|下松|岩国|田川|大村)市|.+?郡(?:玉村|大町|.+?)[町村]|.+?市.+?区|.+?[市区町村])(.+) あまり厳密ではないのでちゃんとしたとこでは使わないほうがいいです 住所データを用意する 郵便局からデータをダウンロードしておく。一ヶ月毎に更新されている。 → 郵便番号データ

    なるべく短い正規表現で住所を「都道府県/市区町村/それ以降」に分けるエクストリームスポーツ - Qiita
    tasogare30
    tasogare30 2016/01/27
    たのしげ
  • 正規表現:悪い表現、いい表現、最良の表現 | POSTD

    わずかな文字がいかにしてパフォーマンスに大きな違いを生めるかというお話 正規表現は、私たち開発者がことあるごとに駆使する呪文のようなものですが、私たちはそれをどんな時も巧みに使いこなしていると言えるでしょうか。正規表現は繊細で精密な言語です。入念な慎重さで記述してやれば、ボウリングで一瞬にして完璧なストライクを取るような強力なテキストとなり得ます。 しかし、正規表現が精密さに欠ける状態で投げ出されると、さながら酔っ払いがよろよろとつまずきながらテキストの上を歩くがごとく、そのボールはぎこちなくボウリングのレーンを転がり、ピンを1つか2つ倒すだけで終わってしまうのです。 これら2つの正規表現の違いは何なのか。何がいい表現と悪い表現を分けるのか。正規表現に素晴らしい力を与えるメカニズムを、この投稿で明かしてみようと思います。効果的な表現とそうでない表現との大きな違いをきっと分かってもらえるはず

    正規表現:悪い表現、いい表現、最良の表現 | POSTD
  • 正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう

    正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/

  • 文字列検索コマンド「grep 2.17」リリース | OSDN Magazine

    GNU Projectのgrep開発チームは2月17日、最新安定版「grep-2.17」をリリースした。パフォーマンスの向上が行われており、「10倍の高速化」が実現されているという。 grepはファイルから特定のパターンを検索するツールで、「global regular expression print」の略。正規表現による検索も可能で、多くのUNIX系システムで使われているほか、Windowsでも動作する。 grep 2.17は1月初めに公開されたバージョン2.16に続く安定版。7週間で8人の開発者より合計19のコミットがあったという。最大の特徴は性能。バッファモードの活用などにより、マルチバイト文字列に対し-iオプションを利用し、\または[が含まれていないパターンを検索する際の速度が10倍高速になったという。-iオプションを利用しない場合は、最大7倍程度の改善が可能だそうだ このほかg

    文字列検索コマンド「grep 2.17」リリース | OSDN Magazine
  • IDEA * IDEA

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

    IDEA * IDEA
    tasogare30
    tasogare30 2013/08/08
    正規表現は古いから良いんだよなって、詳説 正規表現読んでて思った。
  • 仮想化された日々:vimでの文字数カウント方法 - livedoor Blog(ブログ)

    最近、なるほどと思ったvimの使い方を紹介する。 vimで次のコマンドを実行すると、 :%s/./&/g 編集中のテキストの文字数をカウントする事が出来る。 このコマンドにおける「.」は、正規表現で言うところの、「(改行文字以外の)任意の一文字にマッチ」であり、「&」は「マッチした文字列」を意味するので、結局上記のコマンドは、「各文字を、その文字自身で置換する」ということなる。その過程で、何箇所にマッチしたかが表示されるので、結果、テキストの中身を変えずに文字数のカウントが出来る、という訳だ。 「%」の代わりに、 :10,15s/./&/g のようにすれば、特定の行間でカウントすることも可能。置換における範囲指定のやり方を覚えておけば、そのまま応用できる。 もちろん日語とアルファベットが混在しているテキストでもちゃんと動作する。

    tasogare30
    tasogare30 2013/07/29
    なるほど >> :%s/./&/g
  • IDEA * IDEA

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

    IDEA * IDEA
  • 1