正则表达式
Posted truelycloud
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
经典正则表达式
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
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章