テキスト たとえば次の通り、複数行のテキストがあるとする。 ( 2行目の最後にも改行がある状態だ )
golang の Regexp は初期化の Compile コストがそこそこありますが、実は正規表現のパターンと対象となる文字列によって、初期化コストが無視できる(パターンと文字列に支配される)くらい遅くなります。よく言われる regexp の初期化コスト問題が無視できると言われても、正直、全く嬉しくないですね。 ただ、コーディング中に regexp パッケージを使わなければいけない場面は出てくるため、なるべくコストの掛からない実装を心がけています。 Compile/MustCompile 初期化コストはなくすため、グローバルに保持するようにします。 定義 var re = regexp.MustCompile("[a-z]{3}") func main() { fmt.Println(re.FindAllString("foobarbazqux", -1)) // => [foo bar
(Last Updated On: 2018年8月13日)Railsアプリケーションを作る機会も多くなったと思います。今までPHPのみを使ってきた方の為に、開発者がよく落ちてしまうRails/Rubyの落とし穴を少しだけ紹介します。RailsからWebアプリをはじめる方にも役立つと思います。 to_iやto_fは型変換ではない 私のブログ読者はPHP開発者の方が多いと思うので基本的なところから紹介します。RubyはPHPよりデータ型に厳格です。例えば、””(空文字列)や0は偽(false)と評価されません。 2.0.0p247 :001 > true == true => true 2.0.0p247 :002 > true == false => false 2.0.0p247 :003 > "" == true => false 2.0.0p247 :004 > "" == false
/[^\s ]/日本語訳: 空白系文字(\s)と全角スペース( )以外(^)の文字が含まれている。 解説 ・\sは空白文字の略記法で、半角スペース・タブ・改行文字を含んでいます。 ・\sの後ろの空白は全角スペースです。 ・全角スペースは漢字と同じ扱いなので、\sには含まれません。 ・大括弧([ ])は、カッコ内のどれか1文字という意味です。 [ ]が無いと、「\s 」という塊を検索してしまいます。 ・[ ]の外で^を使うと、別の意味になります。 使用例(PHP) //引数の文字列が、 //未定義・NULL・空文字列・空白文字のみの文字列 //いずれかの場合、trueを返す function isBlank($str) { if( !isset($str) ){ return true; }elseif( preg_match("/[^\s ]/", $str) ){ return fals
正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlやPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く