Enviar pesquisa
Carregar
正規表現のススメ_20091217
•
Transferir como PPT, PDF
•
2 gostaram
•
765 visualizações
ngi group.
Seguir
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 8
Baixar agora
Recomendados
書こう!正規表現 vol.2 文字クラス(例外)
書こう!正規表現 vol.2 文字クラス(例外)
Takaaki Hirano
書こう!正規表現 vol.2 文字クラス(基本)
書こう!正規表現 vol.2 文字クラス(基本)
Takaaki Hirano
書こう!正規表現 vol.3 ()
書こう!正規表現 vol.3 ()
Takaaki Hirano
mathematical_notation
mathematical_notation
Kenta Oono
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
hixi365
黒い目の大きな女の子:構文から意味へ
黒い目の大きな女の子:構文から意味へ
Hiroshi Nakagawa
基底変換、固有値・固有ベクトル、そしてその先
基底変換、固有値・固有ベクトル、そしてその先
Taketo Sano
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
(^-^) togakushi
Recomendados
書こう!正規表現 vol.2 文字クラス(例外)
書こう!正規表現 vol.2 文字クラス(例外)
Takaaki Hirano
書こう!正規表現 vol.2 文字クラス(基本)
書こう!正規表現 vol.2 文字クラス(基本)
Takaaki Hirano
書こう!正規表現 vol.3 ()
書こう!正規表現 vol.3 ()
Takaaki Hirano
mathematical_notation
mathematical_notation
Kenta Oono
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
hixi365
黒い目の大きな女の子:構文から意味へ
黒い目の大きな女の子:構文から意味へ
Hiroshi Nakagawa
基底変換、固有値・固有ベクトル、そしてその先
基底変換、固有値・固有ベクトル、そしてその先
Taketo Sano
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
(^-^) togakushi
フラクタリスト技術知識共有会発表資料 090903
フラクタリスト技術知識共有会発表資料 090903
ngi group.
Q4 Mでメッセージキュー
Q4 Mでメッセージキュー
ngi group.
素敵なjavascript ~Firefox編 ~
素敵なjavascript ~Firefox編 ~
ngi group.
Yii紹介
Yii紹介
ngi group.
Html5 入門編 その2
Html5 入門編 その2
ngi group.
素敵なjavascript ~google chrome編~
素敵なjavascript ~google chrome編~
ngi group.
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
ngi group.
Git紹介~入門編~
Git紹介~入門編~
ngi group.
muninで簡単&自在サーバーモニタリング
muninで簡単&自在サーバーモニタリング
ngi group.
軽量高機能webサーバーnginx
軽量高機能webサーバーnginx
ngi group.
SvnからGitへの移行について
SvnからGitへの移行について
ngi group.
The Royal Lagoon Bhubaneswar
The Royal Lagoon Bhubaneswar
SJ Developers And Housing (P) Limited
RubyとPost Gis
RubyとPost Gis
ngi group.
Mixiアプリで体験する Open Social
Mixiアプリで体験する Open Social
ngi group.
Tokyo Cabinet
Tokyo Cabinet
André Mayer
Zshって最強らしい
Zshって最強らしい
ngi group.
しょぼいプレゼンをパワポのせいにするな! by @jessedee
しょぼいプレゼンをパワポのせいにするな! by @jessedee
「MakeLeaps」請求書の作成、管理、郵送
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
MOCKS | Yuta Morishige
Mais conteúdo relacionado
Destaque
フラクタリスト技術知識共有会発表資料 090903
フラクタリスト技術知識共有会発表資料 090903
ngi group.
Q4 Mでメッセージキュー
Q4 Mでメッセージキュー
ngi group.
素敵なjavascript ~Firefox編 ~
素敵なjavascript ~Firefox編 ~
ngi group.
Yii紹介
Yii紹介
ngi group.
Html5 入門編 その2
Html5 入門編 その2
ngi group.
素敵なjavascript ~google chrome編~
素敵なjavascript ~google chrome編~
ngi group.
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
ngi group.
Git紹介~入門編~
Git紹介~入門編~
ngi group.
muninで簡単&自在サーバーモニタリング
muninで簡単&自在サーバーモニタリング
ngi group.
軽量高機能webサーバーnginx
軽量高機能webサーバーnginx
ngi group.
SvnからGitへの移行について
SvnからGitへの移行について
ngi group.
The Royal Lagoon Bhubaneswar
The Royal Lagoon Bhubaneswar
SJ Developers And Housing (P) Limited
RubyとPost Gis
RubyとPost Gis
ngi group.
Mixiアプリで体験する Open Social
Mixiアプリで体験する Open Social
ngi group.
Tokyo Cabinet
Tokyo Cabinet
André Mayer
Zshって最強らしい
Zshって最強らしい
ngi group.
しょぼいプレゼンをパワポのせいにするな! by @jessedee
しょぼいプレゼンをパワポのせいにするな! by @jessedee
「MakeLeaps」請求書の作成、管理、郵送
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
MOCKS | Yuta Morishige
Destaque
(18)
フラクタリスト技術知識共有会発表資料 090903
フラクタリスト技術知識共有会発表資料 090903
Q4 Mでメッセージキュー
Q4 Mでメッセージキュー
素敵なjavascript ~Firefox編 ~
素敵なjavascript ~Firefox編 ~
Yii紹介
Yii紹介
Html5 入門編 その2
Html5 入門編 その2
素敵なjavascript ~google chrome編~
素敵なjavascript ~google chrome編~
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
Git紹介~入門編~
Git紹介~入門編~
muninで簡単&自在サーバーモニタリング
muninで簡単&自在サーバーモニタリング
軽量高機能webサーバーnginx
軽量高機能webサーバーnginx
SvnからGitへの移行について
SvnからGitへの移行について
The Royal Lagoon Bhubaneswar
The Royal Lagoon Bhubaneswar
RubyとPost Gis
RubyとPost Gis
Mixiアプリで体験する Open Social
Mixiアプリで体験する Open Social
Tokyo Cabinet
Tokyo Cabinet
Zshって最強らしい
Zshって最強らしい
しょぼいプレゼンをパワポのせいにするな! by @jessedee
しょぼいプレゼンをパワポのせいにするな! by @jessedee
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
正規表現のススメ_20091217
1.
正規表現のススメ
2.
正規表現について 正規表現(せいきひょうげん、 regular
expression )とは、文字列の集合を一つの文字列で表現する方法の一つである。正則表現(せいそくひょうげん)とも呼ばれ、形式言語理論の分野では比較的こちらの訳語の方が使われる。まれに正規式と呼ばれることもある。 (wikipedia: 正規表現 http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE ) というお堅い説明ですが それが嫌いな人向けの説明としては 指定した、文字列 ( 数字含む ) の検索・置換等が楽になります。 ただ パターン と呼ばれるマッチさせるための表記法が初心者にはとっつきにくい感はあり。 ※ 正規表現にも色々ありますが、今回は Perl の場合においての正規表現として紹介します。 ※ PHP ユーザーも Perl 互換の関数 (preg 系 ) があるのでそれにも応用可能です。
3.
エスケープシーケンス ※ 1
キャリッジリターン Carriage Return(CR) = 改行位置と思ってください。 MacOS ではこの CR で改行を表します。 Windows ではラインフィード (LF = ) とキャリッジリターンを組み合わせて改行を表します () 。 Unix 系ではラインフィードで改行を表します。 キャリッジ とは タイプライター機器において文字を打ち込みつつ移動する部品の名称 。 これを元に戻す = 改行する ということがあり、その 名残 らしい。 それぞれ 、ダブルクォート、シングルクォートを表記 、 、 EOF( エンドオブファイル = ファイルの終端 ) キャリッジリターン ( ※1) バックスペース 内臓ベルを鳴らす ( 制御系コードの模様 ) タブコード 改行
4.
メタ文字 (1/2) ■
メタ文字・・・以下のような特殊な意味を持つ文字と思ってください a|b|c ならば a もしくは b または c がマッチする。といったような いずれか (OR) を表す。 |( パイプライン ) グループ化。 (aaa) とすれば、文字列中にある aaa がマッチ。 ( ) 文字クラス。 POSIX ブラケット表現とも呼ぶらしいです。 任意の文字にマッチさせる文字の集合体と思ってください。 お [ 父母兄姉 ] さん と表現した場合、「 お父さん 」「 お母さん 」「 お兄さん 」「 お姉さん 」のいずれにもマッチします。便利! [ ] エスケープ文字。特殊な文字をマッチさせたい際に使用。 + をマッチさせたいが、メタ文字であるので・・・ といったようにすればマッチする。 文字列の末尾 $ 文字列の先頭。 アクサンシルコンフレックス と読むらしい。 べき乗記号 と読んでました。 「 あいうえおあいうえお 」とあるうち、「 ^ あ 」とした場合 先頭の「 あ 」がマッチします。途中にある「 あ 」はマッチしません。 ^ 0 または 1 回だけの文字 ? 1 回以上の連続する文字 + 0 回以上の連続する文字 *( アスタリスク ) 改行を除く 任意の 1 文字 .( ピリオド )
5.
メタ文字 (2/2) ■
メタ文字・・・以下のような特殊な意味を持つ文字と思ってください 空白以外にマッチ。 [^ ] と同じ。 単語の境界以外にマッチ。 単語の境界にマッチ。 もしくは の間。 空白にマッチ。 [ ] と同じ。 英数字以外にマッチ。 [^_a-zA-Z0-9] と同じ。 英数字にマッチ。 [_a-zA-Z0-9] と同じ。 数字以外にマッチ。 [^0-9] と同じ。 数字にマッチ。 [0-9] と同じ。 量指定子。 n は数値。 aaa{3} aaaa とあった場合、 aaa(3 つ ) がマッチする {n}
6.
Tips(1/2) ■ 範囲指定
文字クラス内に -( ハイフン ) を使用すると範囲が指定できます。 例 ) 01234 ~ 89 のいずれかにマッチ。 文字列: 0123456789 パターン: [0-9] 例 2)[a-z] 文字列 :abcdefghijklmnopqrstuvwxyz パターン: abc ~ xyz のいずれかにマッチ。 例 3) abc と mno のいずれかにマッチ。 文字列: abcdefghijklmnopqrstuvwxyz パターン: [a-cm-o] ■ 否定文字クラス 文字列の先頭を表す ^ は文字クラス [] 内で使用すると、否定となります。 [^ マッチさせたくない文字 ] [^0-9] = 数字 (0-9) 以外がマッチ ■ n 回以上、 m 回以下にマッチ 指定文字が n 回以上、 m 回以下のものをマッチ、といったことができます。 {n,m} 例 ) dddd と eeeee のみがマッチ 文字列: a bb ccc dddd eeeee パターン: {4,5}
7.
Tips(2/2) ■ 行末の空白を表す
+$ = 空白、 + = 1 文字以上存在、 $ = 行末 これを使って行末に空白があった場合削除できます。 逆に行頭にできたインデントやタブなどの空白を削除する場合 ^+ ^ = 行頭、 = 空白、 + = 1 文字以上存在 ■ 肯定の後読み ( と呼ぶらしいです ) abcdef とあった場合のみマッチします。 (?<=abc)def abccdef 等の場合はマッチしません。 ■ 否定の後読み aabef とあった場合等、 def の前に abc が無い場合のみマッチ します。 (?<!abc)def abcdef = マッチしない bbdef = マッチする ※ 逆に 肯定の先読み 、 否定の先読み といったようなものもあります。 abc(?=def) = abc のあとに def がある場合マッチ ( 肯定の先読み ) abc(?!def) = abc の後に def が無い場合マッチ ( 否定の先読み )
8.
まとめ 正規表現を使えば、様々なパターンの言葉が来ても応用が利くようにできており コードを何行も書く必要がなくなったりすることも多々あります。
ただ、正規表現に慣れていない人には理解し難いこともあり コードが見難いといった弊害もあります。 また同じ正規表現を表そうとしても人によってパターンが違う ( 方言と呼ぶらしい ?) がありますが そういうデメリットは些細なこと!と思えるほど便利なものなので是非使いまくると良いかと思います。 引用、参考元 wikipedia: 正規表現 http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE サルにもわかる正規表現入門 http://www.mnet.ne.jp/~nakama/ PHP 正規表現チェッカー ( 長い正規表現を書く場合等に使用する ? 正規表現シミュレーションみたいなもの ) http://www.rider-n.sakura.ne.jp/regexp/regexp.php 正規表現アプレット (Java Applet) http://www.noids.net/applet/regex/index.htm
Baixar agora