Regex takatosi.

Slides:



Advertisements
Similar presentations
R Basics 2013/12/09 Yamada. 今日の方針 Today’s plan テキスト・文字列を扱うにあたっての用 語の理解をすることの方が、 R での操作を 見るより有意義と思われるので、そちら を優先 Learning terms on text/strings is more.
Advertisements

わんくま同盟 大阪勉強会 #22 正規表現を活用しよう 書式チェックだけでは勿体ない。文字列 加工や引数チェックも可能ですよ 「使えない ! 」とならないために Ognac.
プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
和田俊和 資料保存場所 /2/26 文法と言語 ー正規表現とオートマトンー 和田俊和 資料保存場所
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
文法と言語 ー字句解析とオートマトンlexー
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
正規表現ライブラリ 一般的なもの GNU regex GNU rx pcre Henry Spencer’s regex.
JavaScript プログラミング入門 2006/11/10 神津.
コンパイラ 2011年10月17日
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
JavaによるCAI学習ソフトウェアの開発
計算の理論 I 決定性有限オートマトン(DFA) と 非決定性有限オートマトン(NFA)
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
5.チューリングマシンと計算.
5.チューリングマシンと計算.
Ruby勉強会(第1回) 2006/06/29 竹内豪.
第4回 個人の動画配信補足のためのWeb構築
Q q システムソフトウェア 第2回:2007年10月10日(水) q q.
情報科学1(G1) 2016年度.
言語処理系(5) 金子敬一.
計算の理論 I -講義について+αー 月曜3校時 大月美佳.
コンパイラ 2012年10月15日
情報リテラシー実習 Exercise in Information Literacy
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
東京工科大学 コンピュータサイエンス学部 亀田弘之
スクリプト言語を用いたPHITSの連続実行
形式言語とオートマトン2013 ー有限オートマトンー 第5日目
計算物理学基礎 第1回 UNIXの基礎 C言語の基本.
「ユーザー設定リスト」の作成と削除 ◎ 新しい「リスト」の作成法
k 個のミスマッチを許した点集合マッチング・アルゴリズム
第7回ネットワークプログラミング 中村 修.
形式言語とオートマトン2008 ー有限オートマトンー
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
プログラミング言語論 第3回 BNF記法について(演習付き)
文法と言語 ー字句解析とオートマトンlexー
文法と言語 ー字句解析とオートマトンlexー
東京工科大学 コンピュータサイエンス学部 亀田弘之
独習XML 第2章 XML文書の構成要素 2.1 XMLの文字と文字列 2.2 コメント
第4回 コンピューティングの要素と構成 平成22年5月10日(月)
正規表現パート2 NFAエンジンの場合は、 正規表現の磨き上げが必要?.
半構造化テキストに対する 文字列照合アルゴリズム
ネットワークプログラミング (3回目) 05A1302 円田 優輝.
情報処理概論Ⅰ 2007 第5回 2019/4/7 情報処理概論Ⅰ 第5回.
プログラミング基礎B 文字列の扱い.
平成20年10月5日(月) 東京工科大学 コンピュータサイエンス学部 亀田弘之
PHP 概要 担当 岡村耕二 月曜日 2限 平成22年度 情報科学III (理系コア科目・2年生)
計算の理論 II 前期の復習 -有限オートマトン-
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
計算の理論 I 正則表現とFAとの等価性 月曜3校時 大月 美佳 平成15年6月16日 佐賀大学知能情報システム学科.
東京工科大学 コンピュータサイエンス学部 亀田弘之
長さの制限付きギャップと 文字クラスを含むパタンに対する 照合アルゴリズムの改善
2007年度 情報数理学.
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
平成26年4月22日(火) 東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 I ー正則表現とFAの等価性 その1ー
計算の理論 I 決定性有限オートマトン(DFA) と 非決定性有限オートマトン(NFA)
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
C言語ファミリー C# 高級言語(抽象的) Java オブジェクト指向 C++ C 機械語(原始的)
東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 I 非決定性有限オートマトン(NFA)
5.チューリングマシンと計算.
計算の理論 I ー正則表現とFAの等価性ー 月曜3校時 大月 美佳.
文法と言語 ー字句解析とオートマトンlexー
4.プッシュダウンオートマトンと 文脈自由文法の等価性
コンパイラ 2012年10月11日
プログラミング言語論 プログラミング言語論 演習7 解答と解説 演習7 解答と解説 1.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第3回Bashゼミ for文処理について 発表者 直江 宗紀.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

Regex takatosi

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

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

あるテキストを表現する表現手法及びその言語 メタ文字とリテラルから構成される 様々な正規表現 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

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

Regexの基礎 主要なメタ文字

同じ表現の再度参照 キャプチャ無し括弧 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 キャプチャ無し括弧 (?:…) 効率の向上 正規表現のわかりやすさ

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

Regexの応用

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

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)/

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

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

Regexの応用 最適化

ケーススタディ

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

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

ケーススタディ 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]

その他 RFC822準拠のメールアドレスのマッチング Online Regex Tester http://www.undercostruction.eu/2006/11/12/the-longest-regex-in-the-world/ Online Regex Tester http://www.regextester.com/

参考文献 詳説 正規表現 第三版,オライリーメディア 正規表現クックブック,オライリーメディア http://www.amazon.co.jp/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE-%E7%AC%AC3%E7%89%88-Jeffrey-E-F-Friedl/dp/4873113598/ref=sr_1_1?ie=UTF8&s=books&qid=1273127785&sr=8-1 正規表現クックブック,オライリーメディア http://www.amazon.co.jp/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%82%AF%E3%83%83%E3%82%AF%E3%83%96%E3%83%83%E3%82%AF-Jan-Goyvaerts/dp/4873114500/ref=sr_1_1?ie=UTF8&s=books&qid=1273127851&sr=1-1