タグ

regexに関するnsyeeのブックマーク (64)

  • 正規表現のパーサーをApplicativeで(おまけ) - #3(2009-11-26)

    ■ [Haskell] 正規表現のパーサーをApplicativeで(おまけ) せっかくパースしたのでマッチも。 とりあえずNFAに変換します。NFAの各ステートは、入力文字列から次のステートと残りの入力への関数と考えられます。 data NFAState a = NFAState { runNFA :: [a] -> [(NFAState a, [a])] } | NFAEndState compile :: Regex -> NFAState Char compile (Regex branch) = compileBranch NFAEndState branch compileBranch :: NFAState Char -> Branch -> NFAState Char compileBranch next branch = NFAState $ newState where

  • 正規表現のパーサーをApplicativeで - #3(2009-11-24)

    ■ [Haskell] 正規表現のパーサーをApplicativeで だいぶ昔にパーサーモナドの勉強のために書いた正規表現のパーサーをApplicativeを使って書き直してみました。 import Control.Applicative import Control.Arrow (first) import Prelude hiding (seq) newtype Parser input output = Parser { runParser :: input -> Maybe (output, input) } instance Functor (Parser input) where fmap f parser = Parser $ \i -> first f <$> runParser parser i instance Applicative (Parser input) wh

  • あまり知られていないけれど、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では正規表現が使えるようになる
  • もっと速くするために(スコープ解決コストと正規表現オブジェクトの置き場所) - latest log

    正規表現オブジェクトをどのように配置すれば効率的なのか調べました。 配置パターン A. ループ内にべた書き function job(expr, n) { var i = 0, match; for (var i = 0; i < n; ++i) { match = /regexp1/.exec(expr); match = /regexp2/.exec(expr); } } B. スコープ内(ループの外)に配置 function job(expr, n) { var i = 0, match, REX1 = /regexp1/, REX2 = /regexp2/; for (var i = 0; i < n; ++i) { match = REX1.exec(expr); match = REX2.exec(expr); } } C. 5つ外側のスコープに配置 (function() {

    もっと速くするために(スコープ解決コストと正規表現オブジェクトの置き場所) - latest log
  • URI - 素人がプログラミングを勉強していたブログ

    locationと同じように使えるURIコンストラクタ。new URI("http://example.com/foo?q=bar#qxx").searchのように使う。 function URI(uri) { uri = String(uri); var parser = /^([^:/?#]+:)?\/\/(([^/?#:]*):?(\d*))?([^?#]*)(\?[^#]*)?(#.*)?$/; var m = uri.match(parser); if (!m) throw new URIError("malformed URI given"); this.href = m[0]; this.protocol = m[1] || ""; this.host = m[2] || ""; this.hostname = m[3] || ""; this.port = m[4] ||

    URI - 素人がプログラミングを勉強していたブログ
  • JavaScriptの正規表現をパワーアップ!·XRegExp MOONGIFT

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

    JavaScriptの正規表現をパワーアップ!·XRegExp MOONGIFT
  • PCREはUnicode文字プロパティをサポートするとは限らない - hnwの日記

    (2011/05/19追記)CentOS5のpcreパッケージについて言えば、2010年7月以降Unicode文字プロパティが有効になっているそうです。安心ですね!(via「 CentOS5.5でCakePHP1.3系のInflector::slugを正常動作させる方法 - Lism.in * blog - nekoya (id:studio-m)」) PCREというのは、Perl互換の正規表現ライブラリです。PCREは例えばPHPのpreg系関数で利用されていますし、他の処理系でも多く利用されているかと思います。ところで、PCREの挙動は環境ごとに異なる可能性があることをご存知でしょうか。具体的には、Unicode文字プロパティをサポートする環境としない環境とがあり、同じ正規表現でも挙動が変わることがあります。僕はそんなことを考えた事もなかったので、ビックリしました。 同じ原因で、以前の

    PCREはUnicode文字プロパティをサポートするとは限らない - hnwの日記
  • 正規表現と文脈自由文法の話 - val it : α → α = fun

    http://d.hatena.ne.jp/wasisan/20090321/p1 まず一言。E-Mailアドレスにのみ正しくマッチする正規表現というものは存在しません。それから、RFCではこういうのはたいていBNFで記載されているので、文脈自由文法が使えるならかなりそのまんまで書けるので非常に楽です。 一方で、「正規表現来の目的=トークンの記述」というのには首をかしげます。grep使ったことがないんでしょうか。メールアドレスを正規表現でマッチさせるというシチュエーションはいろいろ考えられますが、MTAやちゃんとした MUAを実装するのでもない限り、よくある用途は「メールアドレスフィールドに突っ込まれたユーザの入力がメールアドレスっぽいかどうか検証する」といった程度のものであり、すなわちhttp://hal456.net/qdmail/validationで書かれているような程度のことで

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • 正規表現を超える - あどけない話

    まずは、Audrey さんが言った Haskell の殺し文句を思い出して頂きたい。 正規表現ベースのパーサはメンテナンスしにくいのに気づいた? Parsec を使って 15分で Perl6 の完全なパーサを書く方法を勉強しましょう。 15分というのは誇張が入っていると思うが、正規表現が保守しにくく、Haskell の Parsec は強力で保守し易いのは事実だ。その理由を Perl と Haskell のコードを示しながら説明してみたいと思う。 Perl を愛する方に:この記事は Perl を攻撃するために書いたのではない。Perl を選んだのは、正規表現を広めた言語であり、僕がそれなりに Perl のコードを書けるためである。この記事の目的は、正規表現よりも関数型パーサー(Parsec)の方が優れていると示すことだ。 例題 この記事では例題として、IPv4 アドレスを解析する関数を書く

    正規表現を超える - あどけない話
  • はてなブログ

    3年ぶりに海外航空券を買うのが怖すぎた やっと!トルコの航空券を取りました。当に怖くて数時間ポチる勇気がまるで出なかった。3年ぶりの海外航空券。ヤヴァイ価格でした。アブダビ経由トルコ便で18万はちょっと昔じゃ考えられない額。7月に9月の航空券を予約したら10万くらいで済んだという情報を見かけた…

    はてなブログ
  • Haskell で正規表現 (2) =~ , Python・Ruby と比較しながら

    以前試したように Haskell において正規表現を使いたい場合は、Text.Regex モジュールを利用する。(cf. Haskell で正規表現) 流れとしては、 「正規表現型の値」を生成 : mkRegex (1) を利用して一致する部分があるか確かめる : matchRegex  import Text.Regex main = do print $ matchRegex (mkRegex "(piyo)") "123hogepiyofuga" print $ matchRegexAll (mkRegex "(piyo)") "123hogepiyofuga" 結果は、 Just ["piyo"] Just ("123hoge","piyo","fuga",["piyo"]) ただし、matchRegex において Just で包んで返される値は、 mkRegex の正規表現で s

  • はてなブログ | 無料ブログを作成しよう

    ネイルで使う材料で、DIY時の木割れやネジ跡を派手にしたらかわいい OSB合板でちょっとしたボックスをつくりました。 ビス止め下手すぎて木を割ったり穴あけすぎたりした場所に、好きな派手色の樹脂を詰めてパテ代わりにしてみました。 ちょっと某HAYっぽみ出て可愛かったので、自分用にメモです。 手順 塗装 派手色グミジェルで失敗部分…

    はてなブログ | 無料ブログを作成しよう
  • はてなブログ | 無料ブログを作成しよう

    週報 2024/04/28 川はただ流れている 4/20(土) 初期値依存性 さいきん土曜日は寝てばかり。平日で何か消耗しているらしい。やったことと言えば庭いじりと読書くらい。 ベランダの大改造をした。 サンドイッチ 一年前に引っ越してからこんな配置だったのだけど、さいきん鉢を増やしたら洗濯担当大臣の氏…

    はてなブログ | 無料ブログを作成しよう
  • perl - 自動で /a|b|c/ を /[abc]/ にしてくれたら... : 404 Blog Not Found

    2006年06月16日00:00 カテゴリLightweight Languages書評/画評/品評 perl - 自動で /a|b|c/ を /[abc]/ にしてくれたら... 正規表現においては、/a|b|c/(alteration)は[abc](character class)にすべし、というのは、perlに限らない常識です。 Mastering Regular Expression Jeffrey E. Friedl [邦訳: 詳説 正規表現] qootas.org/blog - perl regex performance"|"(パイプ)を使った正規表現はめちゃくちゃ遅いから使わないように、ということです。確かにベンチマークを取ると32倍速いです。 どうせならPerl自身が内部で/a|b|c/を[abc]にしてくれたらと思ったことありませんか? 少なくとも、正規表現を仕事で使う

    perl - 自動で /a|b|c/ を /[abc]/ にしてくれたら... : 404 Blog Not Found
  • Enjoy×Study - JavaScriptの正規表現で、メタ文字の"\s","\d"はクロスブラウザでの互換性が無い。

    正規表現で"\d"は、"[0-9]"と一緒だとずっと思っていましたが、FireFoxでは全角数字もマッチします。(FireFox1.5.0.4で確認) /\d/.test('1') // =>true /\d/.test('1') // =>trueちなみにIE 6、Opera 9では、"/\d/.test('1')"はfalseとなります。 気になったので、"\s"、"\w"についても調べてみたところ、下記のような結果になりました。 パターンFireFox 1.5,2.0IE 6, 7Opera 9 /\s/.test(' ') // 半角truetruetrue /\s/.test(' ') // 全角truefalsetrue /\d/.test('1') // 半角truetruetrue /\d/.test('1') // 全角truefalsefalse /\w/.test('

    Enjoy×Study - JavaScriptの正規表現で、メタ文字の"\s","\d"はクロスブラウザでの互換性が無い。
  • 正規表現サンプル(空行を削除する)

    上記の文字をそのままテキストエディターの置換画面に入力してください。 (検索文字列と置換文字列の両方を入力してください。) 置換文字列は空です。(削除するという意味になります。) 「正規表現を使用する」にチェックを入れるのを忘れずに。 正規表現の説明 「^」は行頭を表します。 「\n」は改行を表します。 行頭にいきなり改行があると、空行と判断できます。 ある文字を[]で囲みたい?

    nsyee
    nsyee 2008/01/22
    メモメモ
  • 正規表現の XPath 字句解析その2 - IT戦記

    またまた XPath ネタです。 先日、XPath の字句解析をワンライナーで作ってみた。 - IT戦記で書いた正規表現の XPath 字句解析ですが、よく考えるといろいろおかしかった(不正な文字が無視されたりする)& id:otsune さんからコメントやブクマの突っ込みもありまして、1から正規表現を勉強してから新しく書き直すことにしました。 正規表現の勉強方法 以下の二つの方法で勉強しました。 1.SpiderMonkey の正規表現デバッグオプションを使う SpiderMonkey をビルドするときに、以下のフラグを付けてビルドします。 $ make -f Makefile.ref "DEFINES=-DREGEXP_DEBUG -DDEBUG"こうすると正規表現がどういう風に実行されたかを調べることができます。 こんな感じ $ js js> 'foobar'.match(/o+/)

    正規表現の XPath 字句解析その2 - IT戦記
  • メールの署名から個人情報を抜き出すJavaScript - snippets from shinichitomita’s journal

    情報共有の進んだ会社とかでは、メールをもらったお客さんのことをちゃんと組織として覚えておくために、コンタクト情報としてデータベースに共有することを推進していることが多い。でも、いくらメールには署名があって、すでに電子化されているとはいえ、ふつうはテキスト直書きの署名だったりして、構造化されてなくってかなり扱いにくい。データベースに登録するために、メーラーとブラウザの間で氏名をコピペ、メアドをコピペ、電話番号をコピペということをひたすら繰り返す。正直あまりやりたくない。 まあそんな作業をやらされる側にいるという大前提があるのだけれども、そんな不毛な作業をちょっとでも軽減するために、このスクリプトは作られました、実用系スクリプト第3弾。実用系ということですが、実装はたいしたことない、でもなんか今までになく便利になりそうな予感。 デモサイトはこちら: http://www.geocities.j

    メールの署名から個人情報を抜き出すJavaScript - snippets from shinichitomita’s journal
  • Regexp - Regexp::Commonを引くAPI : 404 Blog Not Found

    2007年10月17日17:00 カテゴリLightweight Languages Regexp - Regexp::Commonを引くAPI Mastering Regular Expression Jeffrey Friedl [邦訳: 詳説 正規表現] そういうことを防ぐにはどうしたらよいか、と考えて作りました。 秋元@サイボウズラボ・プログラマー・ブログ: phpspotの人は正規表現について語らないほうがいいのでは この人、以前にも正規表現のいいかげんな記事を書いていろいろ突っ込まれている。まずは実例から。 Server Source 何をしているかというと、Regexp::CommonをJSONPで引いているのです。このRegexp::Commonは、実際に使用され配布されている正規表現集としては最も実績のあるものの一つですが、そのままではPerlでしか使えないのでこうしてみ

    Regexp - Regexp::Commonを引くAPI : 404 Blog Not Found