わんくま同盟 大阪勉強会 #22 正規表現を活用しよう 書式チェックだけでは勿体ない。文字列 加工や引数チェックも可能ですよ 「使えない ! 」とならないために Ognac.

Slides:



Advertisements
Similar presentations
都道府県の 位置と名称 都道府県の 位置と名称 はじめ る. 北海道 道庁所在地は? 北海道の道庁所在地は 札幌市.
Advertisements

並び替え. 名古屋市 県 名県 名 県庁所在地 中部地方 ( 東海) 秋田市 県 名県 名 県庁所在地 東北地方.
並び替え. 名古屋市 県 名県 名 県庁所在地 秋田市 県 名県 名 県庁所在地 青森市 県 名県 名 県庁所在地.
プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
1 検索 ● 検索: 特定の文字列を探す ⓪検索を行う範囲を限定するときは、範囲選択をする。 ① 「ホーム」タブ⇒「編集」⇒「検索」タブとクリックする。 ②「検索する文字列」欄に検索したい文字を入力する。 ③「次を検索する」をクリックする。 ③ ‘ 「検索された項目の強調表示」⇒「すべて強調表示」とクリックすると、
1 検索 ● 検索:特定の文字列を探す ⓪検索を行う範囲を限定する ときは、範囲選択をする。 ① メニューバーの「編集」 → 「検索」とクリックする。 ②「検索する文字列」欄に検 索したい文字を入力する。 ③「次を検索する」または 「すべて検索」をクリック する。 ※「コピー」&「貼り付け」 でも入力できる。
表計算ソフトウェア 関数の利用(基本編) Excel. 関数とは 関数とは ・ 計算方法があらかじめ定義され た 数式のこと ・ 必要な値を定められた書式に 従っ て入力するだけで、簡単に計算結 果を求めることができる.
1 なんとなく Ajax ~新しくて古い XMLHttp 川合孝典 (Kansai.pm) 2005/5/22.
和田俊和 資料保存場所 /2/26 文法と言語 ー正規表現とオートマトンー 和田俊和 資料保存場所
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
文法と言語 ー字句解析とオートマトンlexー
エクセル(7)の目次 関数の書式 関数ウィザードの使い方 四捨五入/切り上げ/切り捨て IF関数 問題(1) 問題(2) 問題(3)
MS-Word ⇒ XML 2001/10 マウスをクリックしてください。(カーソルはどこにあっても結構です。)次ページが表示されます。
正規表現ライブラリ 一般的なもの GNU regex GNU rx pcre Henry Spencer’s regex.
XHTML構文検証手法における スクリプト要素の静的解析アルゴリズム
Regex takatosi.
JavaScript プログラミング入門 2006/11/10 神津.
コンパイラ 2011年10月17日
JGN2ネットワーク概要 *IX:Internet eXchange AP:Access Point H19年8月現在 札幌 仙台 金沢
伺か with なでしこ 発表者:しらたま /05/05 うかべん大阪#3.
計算の理論 I 決定性有限オートマトン(DFA) と 非決定性有限オートマトン(NFA)
計算の理論 I ー DFAとNFAの等価性 ー 月曜3校時 大月 美佳.
コンパイラ 2012年10月15日
1 平成28年11月1日現在配備状況 76機(45都道府県、55団体)
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
Netscape Communicator Eudora Microsoft Word
形式言語とオートマトン2013 ー有限オートマトンー 第5日目
「ユーザー設定リスト」の作成と削除 ◎ 新しい「リスト」の作成法
アドレスマッチングサービス 空間情報システム部門 助手 相良 毅 2018/12/1 4th CSIS Simposium.
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
プログラミング言語論 第3回 BNF記法について(演習付き)
文法と言語 ー字句解析とオートマトンlexー
文法と言語 ー字句解析とオートマトンlexー
FlexとBison+アルファ -実習編-
東京工科大学 コンピュータサイエンス学部 亀田弘之
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
エクセル(6)の目次 「ユーザー設定リスト」の作成と削除 「入力規則」での「リスト」 ユーザー定義による表示形式
形式言語とオートマトン Formal Languages and Automata 第4日目
関数の書式 ● SUM関数、AVARAGE関数など代表的ないくつかの関数の書式(数式の構文)は、下記のようなものである。 =関数名(引数1,引数2,引数3,・・・・・) ●引数(入力データ)は、数値で入力しても、セル名で指定してもよい。 例: =SUM(A1:A10,B21:B30,C31:C40)
諸連絡 USBメモリの販売について 日時:6月23日(月)授業開始前 商品:プリンストン社製32MBのUSBメモリ
参考資料1 都道府県に占める政令市・特別区のシェア等の比較 参考資料1 人口(人) 面積(K㎡) A GDP(億円) 昼夜間人口 比率(%)
平成20年10月5日(月) 東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 II 前期の復習 -有限オートマトン-
計算の理論 I 正則表現とFAとの等価性 月曜3校時 大月 美佳 平成15年6月16日 佐賀大学知能情報システム学科.
2007年度 情報数理学.
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
形式言語とオートマトン 中間試験解答例 2016年11月15実施 中島毅.
平成26年4月22日(火) 東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 I 決定性有限オートマトン(DFA) と 非決定性有限オートマトン(NFA)
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
計算の理論 I 非決定性有限オートマトン(NFA)
計算の理論 I ー正則表現とFAの等価性ー 月曜3校時 大月 美佳.
Webページに動きを持たせるJavascript言語について 例題のプログラムを通して体験的に理解することとします。
日本の人口のよみ方を調べよう。 125640000人.
文法と言語 ー字句解析とオートマトンlexー
日本の人口のよみ方を調べよう。 125640000人.
4.プッシュダウンオートマトンと 文脈自由文法の等価性
計算の理論 I NFAとDFAの等価性 火曜3校時 大月 美佳 平成16年5月18日 佐賀大学理工学部知能情報システム学科.
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
コンパイラ 2012年10月11日
非決定性有限オートマトン 状態の有限集合 入力記号の有限集合 注意 動作関数 初期状態 受理状態の有限集合.
例題のプログラムを通して JavaScriptの仕組みを理解することとします。
情報処理Ⅱ 2005年11月25日(金).
野中良哲 講義ページ : 情報処理1~第四回~ 野中良哲 講義ページ :
第3回Bashゼミ for文処理について 発表者 直江 宗紀.
情報処理3 第4回目講義         担当 鶴貝 達政 12/17/2019.
平成12年 1.浜松市. 平成12年 1.浜松市 平成16年 1.浜松市 2.さいたま市 3.北九州市 4.福岡市.
Presentation transcript:

わんくま同盟 大阪勉強会 #22 正規表現を活用しよう 書式チェックだけでは勿体ない。文字列 加工や引数チェックも可能ですよ 「使えない ! 」とならないために Ognac

わんくま同盟 大阪勉強会 #22 自己紹介 Ognac アマチュア無線 Call Sign JE3OGN( じいさんおじん ) AutoMaticComputer (Eniac/Tosbac..) 関西でフリーターデベロッパー (MS 系 ) 汎用機コボル (vm/MVS ・ S/360) で業界入 り VB シンパだったが、気がつけば C# 派に

わんくま同盟 大阪勉強会 #22 正規表現 何が正規? 正規分布 - Normal Distribution Regex も Normal も正規は変 ・「正式」「正規の」「公式」と誤解を している人も OS 環境 /: ベンダー環境で方言が強い 環境が異なれば正規表現の書式動作異

わんくま同盟 大阪勉強会 #22 正規表現エンジンは3種類 1.非決定性有限オートマトン (NFA) エンジン バックトラッキング正規表現検索エンジン 2.正規表現決定性有限オートマトン (DFA) エンジン 高速であるが制限が多い 3. POSIX NFA 標準化されているが低速な.NET は FNA 式

わんくま同盟 大阪勉強会 #22 使い道 テキストボックスの入力値の書式チェッ ク テキストデータの検索 テキストデータの加工 与えられた、指示、命令の引数解析

わんくま同盟 大阪勉強会 #22 単なる道具です。万能薬では有りません アルファベット圏内の道具なので日本文と合わない部 分もある。 分かち書きのない日本文には合わないオプショ ンもある 文末や行末が \cr\lf でなく \n しか認識してくれな い 単語の区切り ( \w \b など ) が日本文には適さない 制約は多いが、それ以上のメリットがある

わんくま同盟 大阪勉強会 #22 一般化しないのは説明が独特だから ? オートマトンがベースなので不可避な表現だが.* 任意の文字の 0 回以上の繰り返し.* 任意の文字の 1 回以上の繰り返し ( 朝 | 夕) ? 日 : 「朝」か「夕」が 0 回または1回の 「日」 一つの記号に複数の意味がある (?= 大阪市 ).* 区 (.*?) 町 左の () は肯定先読みで ? はキャプチャしない 右の () はグループ化で内容を取得する 右の ? は最短検索 混乱しますよね。

わんくま同盟 大阪勉強会 #22 数字 3 桁 : \d{3} 数字 3 桁 ^\d{3}$ 数字 1 ~ 3 桁 ^\d{1,3}$ 100 or 200 ^(100|200)$ 100 と 200 以外の 3 桁 ^(?!100)(?!200)\d{3}$ 単純な郵便番号 ^\d{3}-\d{4}$ , を弾く ^(?! )(?! )\d{3}-\d{4}$"

わんくま同盟 大阪勉強会 #22 パスワードの有効性 Check 8 桁以上の数字と小文字と大文字混じり ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{8,}$ ^[\d-[3-4]]+$ 0 から 9 の数字で 3,4 を弾く

わんくま同盟 大阪勉強会 #22 カンマ区切りの CSV の切り出し a, bb, cc, dd を切り出す \b(?.*), 期待と違う \b(?.*?)(?=(,|$)) 巧くいった 文字列が ”xxxxx”, ‘kkkkkkk” で文字列として ”,” がある a, 'B1,B2,B3', \"Z1,Z2,Z3\", cc, dd \s*(? [""']?)(?.*?)(?(q1)\k )\s*(?=(,|$))

わんくま同盟 大阪勉強会 #22 日付の置換 / 住所の XML 化 /23/2001 4/5/2001 \b(? \d{1,2})(? (/|- ))(? \d{1,2})\k (? (\d{4}|\d{2}))\b \n ${yy}${sep}${mm}${sep}${dd} 字面の置換なので限度がある 01101,"064 "," "," ホッカイドウ "," サッポロシチュウオウク "," アサヒ ガオカ "," 北海道 "," 札幌市中央区 "," 旭ケ丘 ",0,0,1,0,0,0

わんくま同盟 大阪勉強会 #22 郵便番号 CSV の XML 化 \\s*(? [\"']?)(?.*?)(?(q1)\\k )\\s*,\\s*(? [\"']?)(?.*?)(?(q1)\\k )\\s*,\\s*(? [\"']?)(?.*?)(?(q1)\\k )\\s*,\\s*(? [\"']?)(?.*?)(?(q1)\\k )\\s*,\\s*(? [\"']?)( ?.*?)(?(q1)\\k )\\s*,\\s*(? [\"']?)(?.*?)(?(q1)\\k )\\s*,\\s*(? [\"']?)(?.*?)(?(q1)\\k )\\s*,\\s*(? [\"']?)(?.*?)(?(q1)\\k )\\s*,\\s*(? [\"']?)(?.*?)(?(q1)\\k )\\s*,\\s*(? [\"']?)(?.*?)(?(q1)\\k )\\s*,\\s*(? [\"']?)(?.*?)(?(q 1)\\k )\\s*,\\s*(? [\"']?)(?.*?)(?(q1)\\k )\\s*,\\s*(? [\"']?)(?.*?)(?(q1)\\k )\\s*,\\s*(? [\"']?)(?.*?)(?(q1)\\k )\\s*,\\s*(? [\"']?)(?.*?)(?(q1)\\k )\\s*$ var s = re.Replace(line, delegate(Match mc) { //cnt += 1; // 広域変数でつかえる return " " + mc.Groups["ZIP"] + " " // ${ 県名 } ${ 市名 } ${ 町域名 } \n"; + " " + mc.Groups[" 県名 "] + " " + " " + mc.Groups[" 市名 "] + " " + " " + mc.Groups[" 町域名 "] + " " + System.Environment.NewLine ; } );

わんくま同盟 大阪勉強会 #22 区名の抜き出し 大阪市と神戸市の区を抽出 ^.*(?=( 大阪 | 神戸 ) 市 ).* 区.*$ ・政令都市以外の区 ^.*(?<!( 札幌 | 仙台 | さいたま | 千葉 | 横浜 | 川崎 | 新潟 | 静岡 | 浜 松 | 名古屋 | 京都 | 大阪 | 堺 | 神戸 | 広島 | 北九州 | 福岡 )) 市.* 区.*$ ^.*(?<!( 札幌 | 仙台 | さいたま | 千葉 | 横浜 | 川崎 | 新潟 | 静岡 | 浜 松 | 名古屋 | 京都 | 大阪 | 堺 | 神戸 | 広島 | 北九州 | 福岡 )) 市.*[^ 一二 三四五六七八九123456789 ]+ 区.*$

わんくま同盟 大阪勉強会 #22 便利か知らんけど遅いのでは? 遅いか早いかは、スキルしだい 一二万件のを素読みしてみる while ((line = sr.ReadLine()) != null) { continue; } 大阪市と神戸市のデータを C# で抽出 if (line.IndexOf(\" 大阪市 \") > -1 || line.IndexOf(\" 神戸市 \") > -1) 正規表現で抽出 ^.*( 大阪市 | 神戸市 ).*$ 下手な時.*( 大阪市 | 神戸市 ).*

わんくま同盟 大阪勉強会 #22 構文解析もどき ネストされた引数の分離 この式の abc( ) の引数や. F1() の引数を 抜き出したい ABC(KBC,F1( fa1,fb2), G2(g1,g2,g3), H3( K(2),J(3,4)) ) (? [^\(\)]*)(((?'Open'\()[^\(\)]*)+((?'C lose-Open'\))[^\(\)]*?)+)*(?(Open)(?!))

わんくま同盟 大阪勉強会 #22 まとめ Regex は万能ではない道具 慣れるまでが大変 処理系の方言に注意 すべての漢字は [ 一 - 龠 ] 等 Unicode [ 一 - 熙 ] SJISなどコード体系に依存するので注意が必 要 ひらがな、カタカナなどのグループ指定 は両端に無文字が含まれる 学習は慣れるしかないが、式が作れるようになると、言 語で判別するより早く実装できる。