Presentation is loading. Please wait.

Presentation is loading. Please wait.

Regex takatosi.

Similar presentations


Presentation on theme: "Regex takatosi."— Presentation transcript:

1 Regex takatosi

2 アウトライン Regexの基礎 Regexの応用 Regexエンジンの仕組み ケーススタディ

3 演習環境 ホスト ecn-kgws2010s.ht.sfc.keio.ac.jp –p1022

4 あるテキストを表現する表現手法及びその言語 メタ文字とリテラルから構成される 様々な正規表現
Regexの基礎 Regexとは Regular Expression あるテキストを表現する表現手法及びその言語 メタ文字とリテラルから構成される ls /home/* 様々な正規表現 エンジン,サポートするメタ文字,構文,etc /home/takatosi/gatsby.txt マッチ:$perl –p –e ‘m/(正規表現)/($1)/g’ file 置換:$perl –p –e ‘s/(正規表現)/($1)/g’ file

5 Regexの基礎 主要なメタ文字 行頭,行末 ^ $ 文字クラス […], [^…] クラス内の一つの文字にマッチ 選択 (foo|bar)
選択内の表現にマッチ オプション要素 ? 前の文字(クラス)の存在を任意にする 繰り返し + , *, {m, n} + : 一個以上存在 * : 0個以上存在 {m,n} : m回以上n回未満の繰り返し エスケープ \ 略記法 . (すべての文字), \n(改行), \t(タブ), \d(整数 [0-9]) ,\s(空白文字, タブ,スペース,改行), \w (文字 [a-zA-Z0-9_]) その他 - 大文字化 \Uhogehoge\E

6 Regexの基礎 主要なメタ文字

7 同じ表現の再度参照 キャプチャ無し括弧 the the boy has proven the theory (?:…)
Regexの基礎 後方参照 同じ表現の再度参照 the the boy has proven the theory s/the the/the/g × s/\sthe the/the/g × s/\s([a-zA-Z]) \$1\s/$1/g キャプチャ無し括弧 (?:…) 効率の向上 正規表現のわかりやすさ

8 演習① Great Gatsbyを第三者視点の小説にかえてみよう(Iを自分のなまえにかえてみよう) 単語の先頭文字を全部大文字にしよう

9 Regexの応用

10 Regexの応用 処理エンジン Regex処理系の動作原理 エンジンの種類

11 First Matchが優先される The dragging belly indicates your cat is too fat
Regexの応用 マッチの仕組み First Matchが優先される The dragging belly indicates your cat is too fat m/cat/ m/(fat|cat|belly|your)/

12 欲張りな量指定子 (+, *, {m,n}) 欲張らない量指定子 ?
Regexの応用 欲張りな量指定子 欲張りな量指定子 (+, *, {m,n}) concatenated catered cathology cat m/c.*at/ 欲張らない量指定子 ? The name “McDonalds” is said “macudonarudo” in Japanese m/”.*”/ m/”[^”]*”/ m/”.*?”/

13 to(nite|knight|night)
Regexの応用 NFAとDFA NFA (Nondeterministic Finite Automaton) 正規表現制御型 DFA (Deterministic Finite Automaton) テキスト制御型 hot tonic tonight! to(nite|knight|night)

14 Regexの応用 最適化

15 ケーススタディ

16 ケーススタディ IPv4アドレスのマッチング
0 ~ 255の間の4つの数字がピリオド(.)3つで区切られた文字列 例 ) , ,

17 ケーススタディ IPv4アドレスのマッチング
悪い例 ^[0-9]+\.[0-9]+\. [0-9]+\. [0-9]+$ ^\d+\.\d+\.\d+\.\d+$ ^\d\d\d\.\d\d\d\.\d\d\d\.\d\d\d$ ^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$ 必ず3桁である必要がある => 厳密すぎる 考慮事項 1 ~ 3桁の入力を許す 0 ~ 255までの数値にマッチする

18 ケーススタディ IPv4アドレスのマッチング
0 〜 255までの数値にマッチ ^(0|1|2…|254|255)\. … どの桁でどの数字が許されるかの検討 \d | \d\d | [01]\d\d | 2[0-4]\d | 25[0-5] [01]?\d\d? | 2[0-4]\d | 25[0-5] ^([01]?\d\d? | 2[0-4]\d | 25[0-5])\.^([01]?\d\d? | 2[0-4]\d | 25[0-5])\.^([01]?\d\d? | 2[0-4]\d | 25[0-5])\.^([01]?\d\d? | 2[0-4]\d | 25[0-5])\.$ 一桁 \d 二桁 \d\d 三桁 (0 or 1で始まる場合) [01]\d\d 三桁 (2 で始まる場合 ) 2[0-4]\d or 25[0-5]

19 その他 RFC822準拠のメールアドレスのマッチング Online Regex Tester
Online Regex Tester

20 参考文献 詳説 正規表現 第三版,オライリーメディア 正規表現クックブック,オライリーメディア
正規表現クックブック,オライリーメディア


Download ppt "Regex takatosi."

Similar presentations


Ads by Google