在Python中re模块用于对正则表达式(regular expression)的支持。
正则表达式是可以匹配文本片段的模式。
一、正则表达式的书写:
1、通配符:点( . )可以匹配任何字符(除了换行符)。如:'.ike' 可以匹配 ’bike‘;’like‘等
2、对特殊字符进行转义:在正则表达式中如果是引用特殊字符作为普通字符有可能会出现问题。如 ‘python.org'可能会被匹配成 ‘Pythonaorg’
解决方法:(1)用转义符。 如上例:‘python\\.org' (两个\\是进行了解释器转义——re模块转义。两个转义)。
3、字符集:使用中括号 [ ] 扩住字符串来创建字符集。 [bl]ike可以匹配bike 、like。[a-zA-Z0-9]可以匹配任意大小写字母和数字
在开头加上 ^ 可以反转字符集。[^qwe]可以匹配除q w e以外的字符。
(注:在字符集中对. * ?等字符进行转义通常没有必要。记住:1、如果 ^ 字符在字符集开头要进行转义(希望^作为普通字符串2、 ] 或 -最好放在字符集开头)
4、选择符和子模式:管道符号 | 。如:只想匹配ipad 和 iPhone——iPad | iPhone。
子模式:有时候不需要对整个模式使用选择运算符。使用圆括号括起需要的部分。如:iP(ad | hone)。
5.可选项和重复子模式:在子模式后面加上问号就变成可选项了。 如:r'(http://)?(www.)?python\.org
(pattern)*:允许模式重复0次或多次。
(pattern)+:允许模式重复1次或多次。
(pattern){m,n}:允许模式重复m~n次。
?表示子模式只能出现一次或不出现。
6、字符串的开始和结尾:只想在字符串开头而不是其他位置匹配’ht+p‘,就用 ^ 标记开始。similarly,字符串结尾用$标识。
二、re库的内容:
re.compile将正则表达式转换为模式对象。使用compile完成一次转化后。每次使用模式就不用进行转换了。re.search(pat,string) == pat.search(string)
re.search 在给定字符串中寻找第一个匹配给正则表达式的子字符串。一旦找到string就会返回True否则返回False
re.match会在给定字符串开头匹配正则表达式。如 match('p','people') 返回True re.match('p','www.python.org')返回False
re.split根据模式的匹配项分割字符串。maxsplit参数表示字符串最多可以分割的次数。
re.findall以列表形式返回给定模式的所有匹配项
re.sub:使用给定替换内容将匹配模式的子字符串替换掉
re.escape对字符串中所有可能被解释成正则运算符的字符惊醒转义的应用函数
三、组:
组就是放置在圆括号内的子模式,组的序号取决于它左侧的括号数。组0就是整个模式
re匹配对象的一些重要方法:
group方法返回模式中与给定组匹配的字符串
start返回给定组的匹配项的开始索引
end返回结束索引
span以元组的形式返回(start,end)