![ApacheのURLリダイレクト設定 | RewriteRuleサンプル付 | エンジニアのためのSEO入門](https://cdn-ak-scissors.b.st-hatena.com/image/square/db0b6d5cd2de959b565b532c4124f0524b440544/height=288;version=1;width=512/https%3A%2F%2Fwebtan.impress.co.jp%2Fsites%2Fdefault%2Ffiles%2Fstyles%2F1200x630%2Fpublic%2Fimages%2Farticle2009%2Fseseo%2Fseseo_icon.jpg%3Fitok%3DXjhLFQb2)
HTML5で正規表現がサポートされる、といったことをきっかけに、正規表現はプログラマだけでなくWebクリエイター全体のスキルとして求められていくものになっていくのではないでしょうか(参考:あまり知られていないけれど、HTML5では正規表現が使えるようになる )。 ここではそうした正規表現の初学者や、一度挫折したけど再入門したい人、そしてより高度な内容をマスターしたいすべての人のためのリソース集を作りました。 初学者向けには「はじめての正規表現」 「はじめての正規表現」は、文字通り正規表現という言葉は知っていても中味はよく分からない、という初学者の方にぴったりのコンテンツ。紙芝居形式のプレゼンテーションで楽しく正規表現について把握できます。 はじめての正規表現 初学者の方には、次の2つの記事も手っ取り早く読めて概要を把握できますので紹介しておきます。 使うほどに良さが分かる正規表現(1/2)
正規表現のoオプションにPerlの暗黒面を見た - はこべにっき ♨ 実はRubyでも同じことが起こる。直訳してみた。 def match(pattern, text) # 繰り返しの中で使うのでoオプションをつけよう! return text =~ /^#{pattern}$/o; end # すべてマッチする for $text in %w(vim vim vim vim vim) if (match('vim', $text)) puts "match: vim"; else puts "not match: vim"; end end # すべてマッチする? for $text in %w(emacs emacs emacs emacs emacs) if (match('emacs', $text)) puts "match: emacs"; else puts "not mat
Perlの正規表現のoオプションてご存じでしょうか? うちはあまり使ったことがなかったのですが,効率のよい正規表現処理を行うときには便利なオプションです. oオプションを使うと,その正規表現のコンパイルが1回しか行われなくなります.たとえば,正規表現の評価が繰り返しのなかで現れると,コンパイルが何度も行われて効率が悪くなります.そういったときにoオプションを付与しておけば,正規表現コンパイルのオーバーヘッドを最小限にとどめることができます. chomp(my $pattern = <>); for my $n (0..100000000000) { # すごく回数の多いループ # oをつければ正規表現がコンパイルされるのははじめの1回だけなので安心 if ($n =~ m/^$pattern$/o) { say "match!"; } } 正規表現が静的な場合は,Perlはこのような最適化
Smashing Magazine - WE SMASH YOU WITH THE INFORMATION THAT WILL MAKE YOUR LIFE EASIER, REALLY. 文字列を処理するにあたって正規表現は欠かせない機能といえる。任意の文字列やテキストファイル、HTML/XMLから特定のキーワードを検索したり取り出し、置換をおこなうにあたって、正規表現が使えると使えないのとでは、プログラミングの手間やツールの活用度合いが変わってくる。 正規表現は便利で強力な機能だが、その独特の表記方法はプログラマ初心者には敷居の高いものでもある。Glen Stansberry氏による正規表現に関するチュートリアルや資料、ツールなどのまとめがSmashing MagazineにEssential Guide To Regular Expressions: Tools and Tutori
能書き 前エントリを書いてからいろいろと調べていて驚いたんだけど、日本語のwebsiteで、それなりにまともにRFC822(RFC2822,RFC5322)に準拠した(もしくはきちんと意図的に準拠していない部分を選択している)正規表現はPerlだろうがPHPだろうがRubyだろうが軽くぐぐった程度では見当たらない。PerlのモジュールのEmail::AddressもEmail::Validも程度の差はあれ問題を抱えている。そこらへんの既存の出回ってる正規表現にどういった問題があるかなんてことは次回エントリにて。 というわけで、Perl、PHP、RubyでRFC5322準拠なメールアドレス(addr-spec)の正規表現を以下に示します。尚、addr-specの最終的な正規表現のみならずそれを作成するに至る部分も併記してあります。これは、最終的な正規表現だけでは難解すぎてとても理解できないか
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 -
一般に、セキュアコーディングの基本として入力値の検証(Validation)をせよということになっていますが、これが変な方向に行くといわゆる「サニタイズ」のような手法になってしまいます。以前も指摘したように、アプリケーションとしてのValidationは仕様に従って行うべきものです。 ですが、概ねどの場合でも行うべき検証として以下があると思います。 文字エンコーディングの妥当姓 制御文字(\x00〜\x1f, \x7f)のチェック 文字列長のチェック このうち後ろ二つを正規表現として書くにはどうすればいいかを考えていました。つまり、「制御文字以外の文字でm文字以上n文字以下」というようなチェックです。m文字以上、n文字以下は、{m,n}で書けるので、問題は「制御文字以外の文字」です。これはtextタイプのinput要素で、かつアプリケーション仕様としては文字種の制限をしない場合を想定してい
JavaScript文字列置換のお話。通常、replace は1回しか置換してくれない。 >>> "aaaa".replace("a", "A") "Aaaa" 何度も置換させるには、正規表現を使うのが手っ取り早い。 >>> "aaaa".replace(/a/g, "A") "AAAA" 置換前の文字列を文字列で受け取ったときには、正規表現オブジェクトを作ればよい。RegExp コンストラクタの第二引数がフラグ。 function myReplaceGlobal(str, before, after){ var reg = new RegExp(before, "g"); return str.replace(reg, after); } myReplaceGlobal("aaaa", "a", "A"); // AAAA ただ、. が任意の文字にマッチしてしまったりと、弊害もある。 m
はじめに「はじめての正規表現」がホッテントリ入りしていますが、 導入としては、何に使うのかがわかりやすくて良いのではないかと思います。 あれを見て、基本機能をまとめてみたくなったので、正規表現の基本的な機能について書いてみます。 (正規表現が初めてという人は「はじめての正規表現」を先に見たほうがいいと思います。) 例では「検索」か「置換」をするものとして話を進めていきます。 (「はじめての正規表現」が実例を中心にしたのに対して、こちらは機能を中心に書きます) 正規表現は、プログラミング言語やその他のツールなど、それぞれで微妙な違い(方言)があるので、その点には注意が必要です。 (表記法が違ったり、ここに紹介する機能がサポートされていなかったり、逆に紹介していない機能をサポートしていたりする場合があります) メタ文字とリテラル文字正規表現には、メタ文字とリテラル文字というものがあります。 メ
このページは Perl5.6 を対象としています. perl スクリプトは EUC-JP で書かれることを想定しています. このページは 正規表現メーリングリスト を参考に,私が独自にメモとしてまとめたものです. このページの正規表現やスクリプトについての詳しい説明, わかりやすい説明はおそらくできません. このページに書かれているスクリプトは, 個人の責任において実行してください. このページに書かれているスクリプトの 利用・改造は自由 です. その際はどこかにこのページの URI( http://www.din.or.jp/~ohzaki/regex.htm )を参考として記述していただければ幸いです(任意). ご意見・ご感想・ご要望などは にお願いします.こう書いた方がいい, 動かん,わからん,バグってる,これ書け,などなどお待ちしています. このページへの リンクは自由 に張ってく
先読み正規表現について、この前やっと理解できた。Rubyリファレンスマニュアルではこんな説明になっている。 (?= ) 先読み(lookahead)。パターンによる位置指定(幅を持たない) (?=re1)re2 という表現は、re1 と re2 両方にマッチするものにマッチする正規表現です。 re1(?=re2) という表現は、後に re2 とマッチする文字列が続く、正規表現 re1 です。 p /foo(?=bar)/ =~ "foobar" # => 0 p $& # => "foo" (bar の部分の情報はない) (?! ) 否定先読み(negative lookahead)。パターンの否定による位置指定(幅を持たない) (?!re1)re2 という表現は、re1 にマッチしないが re2 にはマッチする正規表現です。 # 000 を除く 3 桁の数字 re = /(?!000)\
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く