This is just an experiment and does not do anything yet!
This is just an experiment and does not do anything yet!
はじめに こんにちは。hirataraです。 私が初めて正規表現を使ったのは、PerlによるCGIでの文字列処理でした。それから私はPerlを使い続け、今では正規表現なしのコーディングは考えられないほど、正規表現を当たり前の機能として日常的に使っています。昔は標準では正規表現をサポートしていなかったJavaも、今では正規表現をサポートするようになりました。Javaだけではなく、今日ではほとんどの高級言語にとって、正規表現はなくてはならない機能であると言っても過言ではないほどメジャーな機能となっています。 本記事では、この正規表現の舞台裏に光を当てます。一見すると作ることが難しそうな正規表現エンジンですが、その根底には数学的な概念があり、その概念さえ知っていれば基礎となる機能の実装はそんなに難しくありません。この連載ではその数学的な概念をPythonを使って表現しながら、実際に動作する正規表
nanto_vi, 2008-07-19 自己紹介 nanto_vi (TOYAMA Nao) Days on the Moon Twitter 目次 よくある間違い 正規表現オブジェクトのメソッド グローバルマッチ 文字列のメソッド まとめ よくある書き方 var str = "OSC Kansai 2008"; var year = 0; if (str.match(/(\d+)/)) { year = Number(RegExp.$1); } 何がよくないか RegExp コンストラクタのプロパティはグローバル変数 Mozilla 2 (Firefox 4) では削除されるかも? if (str.match(/(\d+)/)) { doOtherThing(); year = Number(RegExp.$1); } function doOtherThing() { "Firefo
検索アルゴリズム (5)正規表現 -1- 前回までは、固定文字列の照合アルゴリズムを紹介しましたが、この章では特定の「パターン」に合致する文字列を検索する処理、いわゆる「正規表現」(regular expression)を取り上げたいと思います。正規表現は、grep,sed,awk,perlなど、様々なツール、言語上でサポートされているので、たいていの方はその恩恵(?)に預かっているでしょう。 1)正規表現の定義 正規表現は、1つ以上の空白でない「枝」(branch)からなり、各「枝」は'|'で区切られます。正規表現は、「枝」の中のいずれかに一致した場合に「一致した」ことになるので、'|'は"論理和"の役割を持つといえます。
Boostの正規表現クラスを使う Boost の正規表現クラスを使ってみよう思い、ディレクトリ以下のファイルに対して再帰的に grep を行うコードを書いてみました。 以下がそのコードです。再帰的な grep はGNU grep の --recursive オプションでできるので実用的な意味はありません。 #include <assert.h> #include <unistd.h> #include <sys/mman.h> #include <sys/stat.h> #include <fcntl.h> #include <boost/bind.hpp> #include <boost/filesystem/operations.hpp> #include <boost/filesystem/path.hpp> #include <boost/regex.hpp> using name
正規表現ライブラリ ‘Boost Regex++’ の使い方 ‘webを介したプログラムの実行’というアプリケーションの新しい形態が現れ、perl,pythonなどに代表されるスクリプト言語がよく利用されるようになりました。スクリプト言語の多くはテキストすなわち文字列を扱うのを得意としています。 一方C++は文字列を扱うのがあまり得意ではありません。 最近になってようやく文字列を表現するクラスstd::basic_string が標準ライブラリに組み入れられました。 これによって文字列操作を頻繁に行い、かつ移植性の高いアプリケーションの実装がとてもやりやすくなりました。 しかしながら標準の文字列を手に入れたC++でもperlなどのスクリプト言語にかなわないことの一つが’正規表現(regular expression)’です。 たとえばWebの自動巡回を行うアプリケーションを考えてみましょう
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く