Lex与Yacc学习(五)之正则表达式篇

本文详细介绍了Lex与Yacc中正则表达式的语法,包括元字符如.、[]、*、+、?、{}、、()、|等的用法,并举例说明了它们在模式匹配中的作用,帮助读者掌握正则表达式的使用技巧。
摘要由CSDN通过智能技术生成

正则表达式语法

lex模式是由编辑程序和实用程序使用的正则表达式的扩展版本。正则表达式由常规字符(代表它们本身)和元字符(在一种模式中具有特殊含义)组成。

元字符

.

. 匹配除了换行符 \n 之外的任意单个字符

[]

[] 匹配括号中字符的任意一个。用“-”(短划线)指示字符的范围,例如[0-9]指10个数字中的任意一个。如果开括号之后的第一个字符是短划线或者闭括号,那么它就不能被解释为元字符。如果第一个字符是抑扬字符“ ^ ”,那么它的含义就变为匹配括号内字符以外的任意字符。除了以“ \ ”开始的C转义序列被识别以外,其他的元字符在方括号中没有特殊含义。

*

* 匹配前面正则表达式的零次或者多次出现。

+

+ 匹配前面正则表达式的一次或者多次出现。

?

? 匹配前面正则表达式的零次或者一次出现。例如: -?[0-9]+  指具有可选的前导或者一元减号的数字

{}

{} 意味着根据括号内部的不同而不同。单个数字{n}意味着前面的模式重复n次。例如: [A-Z]{3} 表示任意3个大写字母。

如果大括号包含的由逗号分开的两个数字{n,m},那么它们是前面模式重复的最小数和最大数。例如:A{1,3}表示字母A出现1次到3次。

如果第二个数字丢失就意味着无穷大,所以{1,}意味着 +    ;  {0,}意味着 *  。

如果大括号包含一个名字,它指示用那个名字来替换。

\

\ 转义符号,如果后面的字符是小写字母,那么它就是C转义序列。 例如制表位:\t

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值