タグ

regexpに関するJ138のブックマーク (19)

  • 正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう

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

    J138
    J138 2014/03/04
  • JavaScriptの正規表現/?<.+?>/について - OKWAVE

    > /<.+?>/g > をなぜ使うのかが分かりません なぜなら“カンタンだから”です。 もっとも、普通は /<[^>]*>/g ですが。 # 以下、解説 ● /<.+>/g について 既にお分かりのことを解説しても無意味かもしれませんが、 これがまずいのは、 str = "<B>ABC</B>"; のとき、“str全体にマッチしてしまう”からです。 正規表現で反復を指定する場合、通常は「最長マッチ」を指定したことになります。 つまり、.+ が B>ABC</B にマッチしてしまうのです。 ● /<.+?>/g について .+ の後ろの ? は、「最短マッチ」の指定です。 もっとも短いパターンでマッチさせるので、1回目のマッチでの .+ は B にマッチし、結果 <B> が削除されます。 g オプションにより、マッチするものがなくなるまで繰り返されるので、2回目で </B> が削除されます

    JavaScriptの正規表現/?<.+?>/について - OKWAVE
    J138
    J138 2013/08/19
  • fluentdのformat(正規表現)の作り方について試行錯誤中 #fluentd - Glide Note

    Fluentdを触るようになって、いろんなログをfluentdに 渡すように試行錯誤している最中。 td-agent.conf、fluent.confを用意するときに任意のjson形式にするために 正規表現を用いてformatを書く必要があるんですが、formatの作り方というかデバック方法について どういう手順に作ると良いのか情報がネット上に見当たらず試行錯誤中。 もっと良い方法を教えてもらいたいので、今やっている方法を晒してみる。 そもそもの疑問、どうやってformatを作るのか たとえばfluentd関連の情報を調べてると、 #fluentd で maillog を読み込んで MongoDB に投入 - 酒日記 はてな支店 format /^(?<date>[^ ]+) (?<host>[^ ]+) (?<process>[^:]+): (?<message>((?<key>[^ :

  • 「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
  • Mac OSX用の正規表現確認ツール·Reginald RegEx explorer MOONGIFT

    Reginald RegEx explorerはMac OSX用のフリーウェア(ソースコードは公開されている)。プログラマーなら誰しもが使うであろう正規表現。簡単な表現であればすぐにできるが、オプションを使ったり複雑な条件下で正規表現を使おうとするとなかなかうまくいかずハマってしまうことがある。 マッチングした部分がハイライト表示する そこでコードを実行する前に自分の作った正規表現が正しいのか否か確認が出来ると便利だ。細かく言えばプログラミング言語や環境によって記述が異なる場合があるが、それでも便利に使えそうなのがReginald RegEx explorerだ。 Reginald RegEx explorerはMac OSX上で正規表現を書き、それが正しく認識されるか試すことが出来る。元になるテキストと正規表現を書くと、右下にマッチングした結果が表示される。さらに左下にはテキスト中のマッ

    J138
    J138 2010/09/26
  • 構造化テキストの間違ったエスケープ手法について : 404 Blog Not Found

    2010年09月22日21:30 カテゴリLightweight Languages 構造化テキストの間違ったエスケープ手法について 昨晩のtwitter XSS祭りは、ふだんもtwitter.comは使わない私には遠くの祭り囃子だったのですが、せっかくの自戒の機会なので。 Kazuho@Cybozu Labs: (Twitter の XSS 脆弱性に関連して) 構造化テキストの正しいエスケープ手法について 正しいアプローチは、全てのルールを同時に適用することです。 これは残念ながら(おそらく)必要条件であっても十分条件ではありません。 こういう(かなりええかげんな)正規表現でtweetをparseしていたとします。 re_http = '(?:https?://[\\x21-\\x7e]+)'; re_user = '(?:[@][0-9A-Za-z_]{1,15})'; re_hash

    構造化テキストの間違ったエスケープ手法について : 404 Blog Not Found
  • 正規表現で素数判定 - NO!と言えるようになりたい

    追記:ハッキリ言ってこの正規表現はネタなので,実際に素数判定を行いたい場合は,もっと別な賢いアルゴリズムを使ったほうが良いです 正規表現で素数が判定できるという記事を見たので試してみた. http://www.noulakaz.net/weblog/2007/03/18/a-regular-expression-to-check-for-prime-numbers/ この記事によると /^1?$|^(11+?)\1+$/ という正規表現を使うと,素数判定が出来るらしい.ある整数 n が素数かどうか判定したい場合は,"1" * nという文字列がこの正規表現にマッチするかどうかを調べればよく,マッチすれば非素数,マッチしなければ素数となる.ただし,"1" * n は,例えば,n が 4 ならば "1111" と 1 が 4 回連続して続く文字列となる. Rubyで書いた素数判定プログラムはこん

    正規表現で素数判定 - NO!と言えるようになりたい
  • perl - 100までの素数 : 404 Blog Not Found

    2006年06月16日22:00 カテゴリLLの夏Lightweight Languages perl - 100までの素数 なに前哨戦とな? キミならどう書く 2.0 - ROUND 1 - ? Lightweight Language Ring お題は「100までの整数から素数を列挙せよ」です.まずはCPANから。Perlから、と言わないところがミソ。 perl -MMath::Prime::XS=primes -le '$,=" "; print primes(100)' primesをsieve_primesとするとさらに高速。$,の使い方にも注目。 次にabigailの傑作の変種。 perl -le '$,=" "; print grep { (1 x $_) !~ /^(11+)\1+$/ } (2..100)' なんでこれで素数判定できるかは、読者の宿題。 最後に、割とけれん

    perl - 100までの素数 : 404 Blog Not Found
    J138
    J138 2010/07/23
  • PHP 正規表現の基本 (preg_match)

    正規表現をまとめてみる。 preg_match で使われる正規表現の書き方の前に まずは、 <検索対象文字列が1行か?それとも複数行か?> 文字列の中からパターンに合致する部分を探し出す場合、その文字列が1行(改行文字が1つ)なのか、複数行(改行文字が複数)なのかで、マッチ演算子を適切に指定。 preg_match("/パターン/", 調べる文字列); "/パターン/"  //文字列の1行目のみを調べる "/パターン/g"  //複数行を調べる "/パターン/s"  //改行文字を無視し、1行とみなして調べる ついでに、 "/パターン/i"  //文字列の大文字・小文字を区別しない "/パターン/is"  //大文字・小文字を区別せず、1行とみなして調べる <基> preg_match は、文字列中に現れた最初のパターンのみを検出。

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • あまり知られていないけれど、HTML5では正規表現が使えるようになる

    正規表現といえば、主にsedやawkといったUNIXのコマンドで、あるいはPerlPHPJavaScriptなどのスクリプト言語の中などで、プログラマーが文字列を操作するために使う道具でした。 その正規表現がHTML5でサポートされる見通しです。いままで正規表現を使わずに済んでいたデザイナやコーダーといった職種の方々も、いずれ仕事としてきちんと正規表現を扱わなければならない時代がやってきます。 HTML5のどこに正規表現が使えるようになるの? 正規表現は、input要素のpattern属性の中で使えることになる予定です。W3Cが2009年8月25日付け公開しているHTML5のワーキングドラフトの「4.10 Forms」の「4.10.4.2.8 The pattern attribute」では次のように記載されています。 The pattern attribute specifies a

    あまり知られていないけれど、HTML5では正規表現が使えるようになる
  • JavaScriptの正規表現をパワーアップ!·XRegExp MOONGIFT

    ※ 画面は公式サイトより Webアプリケーションを開発したり、よりコーディング量を少なくシステムを開発する上で正規表現の存在は欠かすことができない。良い正規表現を組めるかどうかで見通しの良いシステムができるかどうか決まってくるだろう。 Named captureをJavaScriptでも 昔からある正規表現ではあるが、JavaScriptでサポートされているものは機能があまり多くない。他のプログラミング言語同等のレベルに引き上げてくれるのがXRegExpだ。 今回紹介するオープンソース・ソフトウェアはXRegExp、JavaScriptの正規表現を機能強化するライブラリだ。 XRegExpは通常使える正規表現機能に加えて、幾つかの機能追加を行っている。特徴的なものとしては、Named captureがあるだろう。これは正規表現のマッチング結果を$1、$2ではなく、指定した名前(nameやv

    JavaScriptの正規表現をパワーアップ!·XRegExp MOONGIFT
  • JavaScript正規表現メモ。 (JavaScriptでよく使う書き方。) - こせきの技術日記

    タイトル変えました。旧タイトル「JavaScriptでよく使う書き方」。よく使うけど毎回忘れる。 正規表現にマッチするかどうか。 RegExp#testを使う。 /abc/.test("abcdefg") // => true String#searchはマッチした位置を返す。マッチしない場合は-1。先頭にマッチすると0でfalseなので注意。真偽値が欲しい場合はString#searchを使わない。 "abcdefg".search(/xxx/) // => -1 "abcdefg".search(/def/) // => 3 "abcdefg".search(/abc/) == false // => true 正規表現の部分マッチを得る。 部分マッチを得るには、RegExp#execかString#matchを使う。execとmatchの速度は大して変わらない。 正規表現のベンチマー

    JavaScript正規表現メモ。 (JavaScriptでよく使う書き方。) - こせきの技術日記
  • 正規表現サンプル集

    今日の正規表現Tips (2008/10/05) \d 0〜9の数字を表す正規表現です。 \D 数字以外を表す正規表現です。 正規表現では小文字が大文字になると反対の意味を持ちます。 ツール 正規表現チェッカー 正規表現Tips集 Tips その1 Tips その2 テキスト編集で役立つ『正規表現のサンプル集』を詳しい説明つきで紹介。 正規表現を使ってテキスト検索&置換して仕事の効率アップを図ろう。 ≪ メニュー ≫ 1.正規表現とはなにか? 2.正規表現を使う準備 3.正規表現サンプル集【検索編】 4.正規表現サンプル集【置換編】 5.正規表現のお勉強との紹介 6.エディタの強調表示でテキストに色づけ 7.プログラムで正規表現を使う 8.正規表現サンプルリクエスト

    J138
    J138 2009/03/11
  • サルにもわかる正規表現入門

    1.正規表現とはなにか? 端的に言えば、「いくつかの文字列を一つの形式で表現するための表現方法」です。 では、なぜこの表現方法が有名なのかといえば、この表現方法を利用すれば、たくさんの文章の中から容易に見つけたい文字列を検索することができるためです。 この形式を使えば、以下のようなコギャルの会話にもついていけます(^_^) 「Windows ってあって…WINDOWSかもしんないしぃ、次にスペースが入ってるかもしんないしぃ、入ってないかもしんないし、後にやっぱ 98 が付くってゆーかー、もしかすると 95 が付いてもいいかなぁって感じでぇ…」 これ以上続けるとこちらがキレてしまいそうなのでこのあたりにしておきますが…これは、正規表現で書くと… W(indows|INDOWS) ?9[85] って感じで一行で書けちゃうっていうかぁ…あ、つい、口調が移ってしまった(^_^;)…書けるのでありま

    J138
    J138 2009/03/11
  • 手軽に正規表現のテストができるツールが登場!Rubyで作られた『Rubular』

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

    手軽に正規表現のテストができるツールが登場!Rubyで作られた『Rubular』
  • 正規表現の入門(1) 基礎的なメタ文字

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    正規表現の入門(1) 基礎的なメタ文字
    J138
    J138 2008/12/11
  • 正規表現の確認

    正規表現を入力すると即座に一致判定を行います。パターンや入力を変えながら あれこれ試行錯誤したい時などに使用してください。正規表現エンジンは JDK 1.6 (Sun Microsystems Inc. Java VM 10.0-b23) を使用しています。PerlJavaScript など他の言語の正規表現とは細かいクセが違う 可能性があるので注意して下さい。Java 正規表現の詳しい仕様は Pattern クラスの API リファレンスに記載されています。

  • Rubular: a Ruby regular expression editor and tester

    Rubular is a Ruby-based regular expression editor. It's a handy way to test regular expressions as you write them. To start, enter a regular expression and a test string. Or you can try an example.

    Rubular: a Ruby regular expression editor and tester
  • 1