正则表达式

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







以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

PHP 正则表达式总结

正则表达式

正则表达式

正则表达式“或“的使用

正则表达式 验证数字格式 非负数 小数点后保留两位 数字正则 double正则

JS正则表达式详解