1 re.compile返回的是一个正则表达式对象。
2 下面两种方式等效,在使用正则较少的情况下不用担心直接使用re.match的性能问题,因为match/search会缓存最近的对象。
prog=re.compile(pattern)result=prog.match(string)# is equivalent to result=re.match(pattern,string)
3 re对象的方法
4 match object的方法
5 match还是search?
match只检查字符串从0位置开始是否符合,而search则会搜索整个字符串。
6 贪婪和非贪婪方式
*等都是贪婪方式。但是后面价格?号改为匹配尽可能少的字符,即*?,+?,??,{m,n}?
7 标识
8 一些定位元字符
9 group分组
group()和group(0)是匹配串,group(n)[n>0]是第n个子分组, group(L,m,n)可以接受多个index返回元祖,groups()返回所有匹配子组。
10 捕获组(...)、非捕获组(?:...)和命名组(?P<name>...)
使用序号1后向引用捕获组(...),使用(?P=name)后向引用命名组(?P<name>...)
11 前向断言Lookahead Assertions
(?=...)确定性断言,(?!...)否定性断言。
12 后向断言lookbehind Assertions
(?<=...)确定性断言,(?<!...) 否定性断言。后向断言只能是固定长度的。
13 条件模式(?(id/name)yes-pattern|no-pattern)
根据id/name引用组存在与否而决定匹配yes-pattern或no-pattern。
网友评论