您的位置:首页 > 其它

[系列][编译原理]正则表达式

2010-01-29 10:48 288 查看
关于正则表达式,作为软件工程师应该比较熟悉了。所谓正则表达式,就是表示字符串的格式。正则表达式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. 注释
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: