正则表达式
经典正则表达式 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |