[系列][编译原理]正则表达式
關于正則表達式,作為軟件工程師應該比較熟悉了。所謂正則表達式,就是表示字符串的格式。正則表達式r完全由它所匹配的串集來定義。這個集合稱為由正則表達式生成的語言,寫作L(r)。此處的語言只是表示“串的集合”,它與程序設計語言并無特殊關系。
?
基本的正則表達式
正則表達式運算
有3種基本運算:
1. 從各選擇對象中選擇,用元字符|表示。比如: a|b
2. 連結,由并置表示。比如: ab
3. 重復或“閉包”,由元字符*表示。比如: a*
?
運算的優先和括號的使用
例如: a|(b(c*))
?
正則表達式的名字
這樣為較長的正則表達式提供了一個簡化的名字。例如:
定義 digit = 0|1|2|...|9
則序列(0|1|2|...|9) (0|1|2|...|9)*可被寫作digit digit*
?
正則表達式的拓展
1. 一個或多個重復用元字符+表示。
2. 任意字符用元字符.表示。
3. 字符范圍。例如[a-z]表示所有的小寫字母。
4. 不在給定集合的任意字符用元字符~表示。例如: ~(a|b|c)
5. 可選的子表達式。
?
通用程序設計中記號的正則表達式
1. 數。
nat = [0-9]+
signedNat = (+|-)? nat
number = signedNat ("." nat ) ? (E signedNat)?
2. 保留字和標識符
reserved = if | while | do | ...
letter = [a - zA - Z]
digit = [0 - 9]
identifier = letter (letter | digit)*
3. 注釋
轉載于:https://www.cnblogs.com/cwblaze/archive/2010/01/29/1659042.html
總結
以上是生活随笔為你收集整理的[系列][编译原理]正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: breakall lisp文件_CAD图
- 下一篇: 010 使用list和tuple