Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
正規表現のはなし / regex theory
Search
USAMI Kosuke
October 15, 2022
Science
0
830
正規表現のはなし / regex theory
※ Docswell に移行しました
https://www.docswell.com/s/usami-k/Z389Q2-regex-theory
USAMI Kosuke
October 15, 2022
Tweet
Share
More Decks by USAMI Kosuke
See All by USAMI Kosuke
Onsager代数とその周辺 / Onsager algebra tsudoi
usamik26
0
610
Apple HIG 正式名称クイズ結果発表 / HIG Quiz Result
usamik26
0
160
ゆめみ大技林製作委員会の立ち上げの話 / daigirin project
usamik26
0
310
@ViewLoadingプロパティラッパの紹介と自前で実装する方法 / @ViewLoading property wrapper implementation
usamik26
0
470
これからUICollectionViewを実践活用する人のためのガイド / Guide to UICollectionView
usamik26
1
730
Xcodeとの最近の付き合い方のはなし / Approach To Xcode
usamik26
2
660
UICollectionView Compositional Layout
usamik26
0
760
Coding Swift with Visual Studio Code and Docker
usamik26
0
500
Swift Extension for Visual Studio Code
usamik26
2
1k
Other Decks in Science
See All in Science
地質研究者が苦労しながら運用する情報公開システムの実例
naito2000
0
140
データベース02: データベースの概念
trycycle
PRO
1
660
理論計算機科学における 数学の応用: 擬似ランダムネス
nobushimi
1
420
多次元展開法を用いた 多値バイクラスタリング モデルの提案
kosugitti
0
290
モンテカルロDCF法による事業価値の算出(モンテカルロ法とベイズモデリング) / Business Valuation Using Monte Carlo DCF Method (Monte Carlo Simulation and Bayesian Modeling)
ikuma_w
0
110
Collective Predictive Coding Hypothesis and Beyond (@Japanese Association for Philosophy of Science, 26th October 2024)
tanichu
0
100
Tensor Representations in Signal Processing and Machine Learning (Tutorial at APSIPA-ASC 2020)
yokotatsuya
0
170
Quelles valorisations des logiciels vers le monde socio-économique dans un contexte de Science Ouverte ?
bluehats
1
270
トラブルがあったコンペに学ぶデータ分析
tereka114
2
1.5k
Factorized Diffusion: Perceptual Illusions by Noise Decomposition
tomoaki0705
0
370
学術講演会中央大学学員会いわき支部
tagtag
0
150
局所保存性・相似変換対称性を満たす機械学習モデルによる数値流体力学
yellowshippo
1
210
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
104
19k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Being A Developer After 40
akosma
91
590k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
[RailsConf 2023] Rails as a piece of cake
palkan
54
5.4k
RailsConf 2023
tenderlove
30
1.1k
The Invisible Side of Design
smashingmag
299
50k
Code Reviewing Like a Champion
maltzj
522
40k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
Why Our Code Smells
bkeepers
PRO
336
57k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Transcript
正規表現のはなし 宇佐見公輔 第25回日曜数学会(2022年10月15日)
自己紹介 宇佐見公輔(うさみこうすけ) 職業:プログラマ 趣味:数学 近況 第3回すうがく徒のつどい:講演(4月) iOSDC Japan 2022:登壇、技術記事執筆(6〜9月) 技術書典13:技術同人誌執筆(8〜9月)
正規表現のはなし / 宇佐見公輔 / 第25回日曜数学会 2
正規表現とは プログラミング言語で、文字列の検索(パターンマッチ)に使われる汎用的な文法。 テキストエディターなど各種ツールでの文字列検索機能でもよく使われる。 正規表現のはなし / 宇佐見公輔 / 第25回日曜数学会 3
正規表現の記法 「 a 」は a にマッチ、「 b 」は b にマッチ
「 (a|b) 」は a または b にマッチ 「 [a-z] 」は a 〜 z のどれでもマッチ 「 . 」は任意の1文字にマッチ 「 a* 」は任意個の a からなる文字列にマッチ(空文字列、 a 、 aa 、、) 「 a+ 」は1個以上の a からなる文字列にマッチ( a 、 aa 、 aaa 、、) 「 (a|b)* 」は aaa 、 abab 、 baab 、 bbbbb 、などにマッチ 「 .* 」は任意個の文字からなる文字列にマッチ 正規表現のはなし / 宇佐見公輔 / 第25回日曜数学会 4
正規表現の基本三演算 正規表現は次の3つの演算で生成される。 連接:正規表現 と に対して、それを並べた 選択:正規表現 と に対して、そのどちらかにマッチする 繰り返し:正規表現 に対して、その任意個の繰り返し
例: 「 a+ 」は「 aa* 」と書ける 「 [a-z] 」は「 (a|b|c|...|z) 」と書ける 「 . 」はすべての文字の選択で書ける(※文字集合は有限集合) 正規表現のはなし / 宇佐見公輔 / 第25回日曜数学会 5
余談:正規表現という言葉 正規表現は「regular expression」の訳だが・・・。 「regular」 一般に「regular」は「正則」と訳されることが多そう そもそも「regular」という言葉が妥当かどうか? 「expression」 一般に「expression」は「式」と訳されることが多そう 「表現」と言われると「representation」を連想するかも? 正規表現のはなし
/ 宇佐見公輔 / 第25回日曜数学会 6
正規表現と集合 正規表現そのものを直接考える代わりに、集合で考える。 正規表現 にマッチする文字列の集合を の受理文字列集合と呼び、 と書く。 例: ある文字列が正規表現 にマッチするかという問題が、集合 の元かという問題
になる。 正規表現のはなし / 宇佐見公輔 / 第25回日曜数学会 7
正規言語 文字列集合を定式化しておく(形式言語理論)。 :文字集合(有限集合とする) :文字列(= の元を有限個並べたもの)全体の集合 長さ の文字列を と書くことにする(空文字列) とする たとえば、
のとき の部分集合 を言語と呼ぶ 言語 がある正規表現 の受理文字列集合 と一致するとき、 を正規言語 と呼ぶ 正規表現のはなし / 宇佐見公輔 / 第25回日曜数学会 8
正規言語の定式化 正規表現を使わずに正規言語を定義することができる。 空集合 は正規言語、空文字列のみの集合 は正規言語 について は正規言語 と が正規言語ならば、選択 は正規言語
と が正規言語ならば、連接 は正規言語 が正規言語ならば、Kleene閉包 は正規言語 これらの条件にあらわれない言語は正規言語ではない ※Kleene閉包 は、 の元を重複を許して有限個取り出して連接した文字列の全体 からなる集合。 正規表現のはなし / 宇佐見公輔 / 第25回日曜数学会 9
正規言語の代数構造 選択の結合法則 選択の交換法則 選択の単位元 連接の結合法則 連接の単位元 零元 分配法則 、 正規表現のはなし
/ 宇佐見公輔 / 第25回日曜数学会 10
正規性の判定 上の言語 があるとき、 上の同値関係 を次で定義する。 Myhill-Nerodeの定理 上の言語 が正規言語であることと、商集合 が有限集合であることは 同値。
これを言語の正規性の判定に使うことができる。また、より条件が緩いポンピング補 題を正規性の判定に使うことができる。 正規表現のはなし / 宇佐見公輔 / 第25回日曜数学会 11
より進んだ話題 有限オートマトン 正規表現マッチングの計算モデルとして、有限オートマトンがある 正規表現と決定性有限オートマトンは等価 正規性の利点 最適化問題が決定問題であり、そのアルゴリズムの方法論も確立されている 非正規な正規表現 プログラミングで使われている正規表現のうち後方参照や再帰の記法は、実 は正規ではない 形式言語理論
形式言語の理論は、正規表現以外にもさまざまな応用がある 正規表現のはなし / 宇佐見公輔 / 第25回日曜数学会 12
参考文献 ※右端はiOSDC Japan 2022のセッション 正規表現のはなし / 宇佐見公輔 / 第25回日曜数学会 13