EasyRamble は、技術ネタや子育て、英語学習、アウトドアなどについて綴るブログです。Ruby on Rails や Swift などで、Webサービス/アプリを作っています。
■ ある文字列を含まないものにマッチする正規表現 どう書けばいいのか分からなかったので、検索してみた。 Perl正規表現雑技 ある文字列を含まないものにマッチする正規表現 (?:(?!foo).)* ?: の部分は、キャプチャしないことを高速化のために指定しているだけなので、 本質的な部分だけ取り出すと以下のようになる。 ((?!foo).)* なるほど。 「foo を前に持たない文字」だけで構成されている、という正規表現なわけか。 ついでに、もう少し具体的な例を。 今回やりたかったのは、 (大文字小文字は区別せず)foo や bar を含む文字列は除外したい、というもの。 そのための正規表現は、次のようになる。 '/^(?:(?!(?:foo|bar)).)*$/i' ただし、PHP の場合は、 Holes in most preg_match() filters - PHP Secur
HTML5で正規表現がサポートされる、といったことをきっかけに、正規表現はプログラマだけでなくWebクリエイター全体のスキルとして求められていくものになっていくのではないでしょうか(参考:あまり知られていないけれど、HTML5では正規表現が使えるようになる )。 ここではそうした正規表現の初学者や、一度挫折したけど再入門したい人、そしてより高度な内容をマスターしたいすべての人のためのリソース集を作りました。 初学者向けには「はじめての正規表現」 「はじめての正規表現」は、文字通り正規表現という言葉は知っていても中味はよく分からない、という初学者の方にぴったりのコンテンツ。紙芝居形式のプレゼンテーションで楽しく正規表現について把握できます。 はじめての正規表現 初学者の方には、次の2つの記事も手っ取り早く読めて概要を把握できますので紹介しておきます。 使うほどに良さが分かる正規表現(1/2)
CSVファイルがあって、CSVの内容は abcde,sfse,abc@may.com,,abc,abc,,,, abcs@hello.com,,,,abc,der,dss,,,,,, dors,hello,back,take@takeonme.com,bee, などとなっています。この中でメールアドレス以外の 文字を削除して abc@may.com, abcs@hello.com, take@takeonme.com というように、書き換えたいと思っています。メールアドレスにヒットさせる正規表現は、[a-z._-]+@[a-z._-]+だと思うのですが、どのように文字のみを削除すればよいかわかりません。もしくはマクロを使って一発で変換できれば、それがよいです。ご教授ください。
文章からメールアドレス(と思われる個所)を抜き出し、カンマ区切りでメールアドレスのリストを作ってみます。 まずはメールアドレスを検索してみます。 少し長くなりますが、これで大抵メールアドレスぽいものはマッチするでしょう。 ぼくのアドレスは boku@dearie.jp だけど、きみの アドレスは ki-mi@dearie.jp だったかい、ベッキー? Noooooo!!いいえジョニー、わたしのアドレスは wa.ta.si01@becky.dearie.jp もしくは wa.ta.si02@becky.dearie.jp よ。 becky@dearie.jp なんかでは、決してないわ。 さて、ここからメールアドレス以外の部分は削除して、メールアドレスだけにしたいと思います。 検索: 置換: メールアドレスの前後を削除してしまおう、とやってみると残念な結果に。 boku@dearie.jp,k
ということで、今回はJavaScriptのパターンマッチネタです。 比較するメソッドとしてmatch、search、test、exec、の4つを取り上げます。 それぞれ性質が異なるので、使う場合は注意が必要です。 比較のために、以下のようなサンプルを作ってみました。 <script type="text/javascript"> <!-- // match()の場合 function hoge1() { base_str = "オッス。おら Tawabagani。" + "友人の Abeshiganiと間違えないでくれよな。"; match_pattern = /\w+?gani/g; r = base_str.match(match_pattern); if (r) { for(var i=0; i<r.length; i++) { alert(r[i]); } } else { al
※(多分)最終バージョンはこちらです。 ⇒[ぴ] - Apache Combined Log を効率的にパースする正規表現メモ , Apache Combined Log 解析正規表現ベンチマークの補足 (2007/10/05) ※ベンチマークありがとうございました。 ネタ的には既出なんですが・・・ Ref: [ぴ] - Apache Combined Log を効率的にパースする正規表現メモ グーグル先生でよく教えてもらえる正規表現というのがありまして、 !^(.*) (.*) (.*) \[(.*)\] "(.*)" (.*) (.*) "(.*)" "(.*)"! これ、使ってみると 1万行解析するのに 7.617 秒かかりました。ありえない。(Let's note T5 / CentOS) で、バックトラックかからないよう、例えばこんな感じに適当に変更: !^([^\s]*) [^
Blog Post Featured post Industrial Vs Non Industrial Plasma Cutting Machines Continue reading Points to Note When Shopping for a Washing Machine There are different washing machines brands in New Zealand. When shopping, therefore, you need to ensure that first, you get a quality machine; a machine that will last through many years without breaking down. You check product warranties and reviews whe
\x{} \pは後続する名前が表すクラス(プロパティ、スクリプト、ブロック)に属する文字にマッチし、 \Pは後続する名前のクラスに属さない文字にマッチします。 クラスの名前が一文字のときはブレースを省略できます。 クラス名の前に^を置くことにより否定形の指定を行うことも可能です。 Perl 5.8 での変更点 Perl5.8以降(5.6でも使えたようですが)では \pや\Pで始まるプロパティ指定に標準Unicode属性を使うこともできます。 詳しくは perlunicode perlunicode - Perl における Unicode サポート を参照してください。 日本語による説明が Unicodestandard にもあります。 Perl 5.8以降ではユーザーが任意のプロパティを作成することができます (IsまたはInを必ず前置)。 詳しくは perlunicode perluni
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く