正则表达式:以字符串的形式规定一个规则,在文本中匹配并找出符合的字符串。
re库中常用的六个函数分别是match、compile、sub、split、search、findall,这些函数的用法基本都是相同的,只是目的不一样。
假设method是re库中的函数
re.method(pattern, string)
pattern:正则表达式
string:文本
意义:从string文本里以pattern这个规则匹配对应的字符串
re.match
匹配成功,返回一个match对象,匹配不到则返回None,注意是要跟string整个都匹配才算成功
import re
m = re.match('a','abc')
type(m)
_sre.SRE_Match
m = re.match('d','abc')
type(m)
NoneType
re.compile
提前预编译好一个正则,后续可直接调用其他正则库中的函数
import re
pat = re.compile('a')
m = pat.match('abc')
type(m)
_sre.SRE_Match
re.split
以正则表达式为分隔符,对文本进行分隔,返回由分隔后的所有字符组成的列表
import re
re.split('b','abcfsbafbsa')
['a', 'cfs', 'af', 'sa']
re.findall
返回字符串中所有正确匹配项组成的列表,即列表中每个元素都能跟正则表达式匹配
import re
re.findall('b','abcfsbafbsa')
['b', 'b', 'b']
注:上式只是一个说明使用方法的例子,在实际中一般都采用特殊的正则表达式
re.sub(a,b,c)
将字符串c中符合正则表达式a的字符全换成字符b,并返回
import re
re.sub('b','1','abcfsbafbsa')
'a1cfs1af1sa'
注:不会改变c变量
正则中的一些细节
如上返回的match对象中有一个group功能,在正则表达式中通过加上括号"()",可以将匹配到的字符串进行分组,分组的个数及对应关系由所加的"()"的数量和位置决定,可用group功能将对应的子串取出来。
在findall函数中
1、当给出的正则表达式带有多个括号时,返回的列表中的元素为多个字符串组成的元组,元组中的元素个数与正则表达式所带的括号数目相同,字符串内容与每个括号内的正则表达式相对应,并且排列的顺序跟括号出现的顺序一样。
2、当给出的正则表达式中带有一个括号时,列表元素为字符串,并与括号中的正则表达式相对应(不是整个正则表达式)。
3、当给出的正则表达式不带括号时,列表元素为字符串,与整个正正则表达式匹配。