码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式

时间:2019-02-07 15:00:59      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:经典   行数据   包含   mic   一个   正则   扩展   数据   font   

经典正则表达式

L(?) = L("") = {""}

If c is a character, L(c) = {"c"}

If R1, R2 are r.e.s, L(R1R2) = {x1x2|x1∈L(R1), x2∈L(R2)}

L(R1|R2) = L(R1)∪L(R2)

L(R?) = L(?)∪L(R)∪L(RR)∪···  匹配符合R的零个或无限多个字符

L((R)) = L(R)

优先级(由高到低):* ,交集 ,并集

括号可以表示组合

 

缩写

字符列表: [a-zA-Z]  匹配括号内任意一个字符

非字符列表: [^a-z]  匹配不在括号内的任意一个字符

字符集: .(dot), \d, \s

L(R+) = L(RR?)  匹配符合R的一个或多个字符

L(R?) = L(? |R)  匹配符合R的一个或零个字符

 

扩展正则表达式

获取括号中的表达式

m = re.match(r’\s*(\d+)\s*,\s*(\d+)\s*’, ’12,34’), have m.group(1) == ’12’, m.group(2) == ’34’

m.group(x)  指代第x对括号匹配到的内容

 

惰性与贪心匹配

贪心:re.match(r’(\d+).*’, ’1234ab’) makes group(1) match ’1234’

惰性:re.match(r’(\d+?).*’, ’1234ab’) makes group(1) match ’1’

 

界限符

re.search(r’(^abc|qef)’, L)   匹配以abc开头或在任意位置包含qef的字符串

re.search(r’(?m)(^abc|qef)’, L)   匹配以abc开头或在任意位置包含qef的字符串或行

(?m)  表示该正则可以读取多行数据

re.search(r’rowr(?=baz)’, L)   匹配后面跟着baz的rowr(匹配结果不包括baz)

(?=baz)  限制匹配结果后续内容

re.search(r’(?<=rowr)baz’, L)   匹配前面是rowr的baz(匹配结果不包括rowr)

(?<=rowr)  限制匹配结果前面的内容

 

非线性模式

re.search(r’(\S+),\1’, L)  匹配后面跟着逗号与其本身的单词    eg. foo, foo

正则表达式

标签:经典   行数据   包含   mic   一个   正则   扩展   数据   font   

原文地址:https://www.cnblogs.com/truelycloud/p/10354715.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!