正则表达式规则

在词法分析中,我们需要利用正则表达式来匹配特定的字符串,因此需要了解常用的正则表达式规则

规则

. 匹配除换行符(\n)以外的任意单字符
[] 字符类,可以匹配方括号中的任意一个字符,如果字符类中的第一个字符为^,则匹配除方括号内字符以外的任何字符,有点类似于操作符中“非”的意思。字符里的破折号表示字符的范围,例如[0-9],意思是要匹配[0123456789],[a-z]意思是要匹配任意小写字母。
^ 如果是正则表达式的第一个字符就匹配行首,在[]中表示补集
$ 如果它是正则表达式的最后一个字符就匹配行尾
{} 当花括号中带有一个或者两个数字时,它就表示前一个模式的最小和最大次数,例如 A{1,3}表示匹配一到三个字母A,而0{5}匹配00000,当花括号中带有名字时,它指向以这个名字命名的模式
\ 用来表示元字符本身和一部分常用的C语言转义序列,例如\n表示换行符,\*则表示子面意义上的星号
* 匹配零个或者多个紧接在前面的表达式,例如[ \t]可以匹配任意多个空格和tab
+ 匹配一个或者多个紧接在前面的表达式,例如[0-9]+可以匹配数字字符串,例如1,123456等。
? 匹配零个或者一个紧接在前面的表达式,例如-?[0-9]+可以匹配所有的正负数(正数前面不能有+号)
| 选择操符,匹配紧接在前面的表达式或者紧跟在后面的表达式,例如zhangsan|lisi|wangwu匹配这三个人名中的任何一个
"..." 所有引号中的字符将基于子面意义被解释,在编写正则表达式的过程中,比较好的做法是用引号引起所有需要基于字面意义匹配的标点符号
() 把一系列的正则表达式组成一个新的正则表达式,例如(01)匹配字符序列01,a(bc|de)可以匹配abc或者ade,圆括号在建立带有
,+,?和|的复杂模式时非常有用
/ 尾部上下文,匹配斜杠前的正则表达式,但是要求其后紧跟斜线后的表达式,例如0/1匹配字符串01中的0,但是不会匹配字符串0或者02,斜线后面的内容不会被“消耗掉”,它们会返还给输入以便于继续匹配,每个模式只允许一个尾部上下文操作符

示例

[-+]?([0-9].?[0-9]+|[0-9]+.) 匹配一个可以带正负号的数字,并且还可以表示小数
[-+]? 表示可以带+号或者-号
[0-9]
表示任何一个数字
.? 表示可以带小数点,也可以不带
[0-9]+ 表示至少有一个数字
| 表示或的关系
[0-9]+. 表示整数后面带小数点的情况,例如 12.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 点(.)匹配任意的字符: text = "ab"ret = re.match('.',text)print(ret...
    140923阅读 276评论 0 0
  • 最近几天在学习正则表达式,大概思路是先了解规则,再学习re库方法,最后就可以找例子运用总结啦~ 1. 规则 1.1...
    最爱西红柿阅读 225评论 0 0
  • Gary134阅读 933评论 0 0
  • 1、非打印字符非打印字符也可以是正则表达式的组成部分,下面列出了表示非打印字符的转义字列 \cx:匹配有x知名的控...
    _Irving阅读 585评论 0 0
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,099评论 0 4