真正理解正则表达式

每个正则表达式 r r r表示一个语言 L ( r ) L(r) L(r),以下给出正则表达式的归纳定义

归纳基础
  • ϵ \epsilon ϵ是一个正则表达式, L ( ϵ ) L(\epsilon) L(ϵ)={ ϵ \epsilon ϵ},即该语言只包含空串
  • 如果 a a a Σ \Sigma Σ上的一个符号,那么 a \bf a a是一个正则表达式,并且 L ( a ) L(\bf a) L(a)={ a a a}
归纳步骤

假定 r r r s s s都是正则表达式,那么:

  • ( r ) ∣ ( s ) (r) | (s) (r)(s)是一个正则表达式,表示语言 L ( r ) ⋃ L ( s ) L(r) \bigcup L(s) L(r)L(s)
  • ( r ) ( s ) (r)(s) (r)(s)是一个正则表达式,表示语言 L ( r ) L ( s ) L(r)L(s) L(r)L(s)
  • ( r ) ∗ (r)* (r)是一个正则表达式,表示语言 ( L ( r ) ) ∗ (L(r))* (L(r))
  • ( r ) (r) (r)是一个正则表达式,表示语言 L ( r ) L(r) L(r),即表达式两边加括号不影响所表示的语言
优先级约定

按照上面定义,正则表达式会包含不必要的括号,以下优先级约定可减少括号

  • 一元运算符 ∗ * 具有最高优先级,并且是左结合的
  • 连接运算符具有次高优先级,它也是左结合的
  • ∣ | 的优先级最低,也是左结合的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值