Python正则表达式,请不要再用re.compile了!!! - 知乎
驳 《Python正则表达式,请不要再用re.compile了!!!》 - 知乎
1
2
正则表达式适用于字符,而不是单词
re模块
pattern: 正则模型
string : 母字符串
flags : 匹配模式
re.compile(pattern, flags=0)
将正则表达式的样式编译为一个 正则表达式对象 (正则对象),
然后通过这个对象,调用方法 match(), search()等
prog = re.compile(pattern)
result = prog.match(string)
等价于
result = re.match(pattern, string)
通过 re.compile() 编译后的样式,和模块级的函数会被缓存,让程序更加高效。
使用 re.compile() 和保存这个正则对象可以复用
re.match(pattern, string[, flags])
从首字母开始开始匹配,string如果包含pattern子串,则匹配成功,返回Match对象,失败则返回None,若要完全匹配(pattern=string),pattern要以$结尾。
对最大匹配,到尾部
my_string= '平安银行股份有限公司信息科技中心平安银行股份有限公司'
regular_v3 = re.match('(.*银行股份有限公司)', my_string)
得到'平安银行股份有限公司信息科技中心平安银行股份有限公司'
match() 方法一旦匹配成功,就是一个match object对象,该对象有以下方法:
group() 返回被 RE 匹配的字符串
start() 返回匹配开始的位置
end() 返回匹配结束的位置
span()返回一个元组包含匹配 (开始,结束) 的位置
re.search(pattern, string[, flags])
若string中包含pattern子串,则返回Match对象,否则返回None,如果string中存在多个pattern子串,只返回第一个。
re.findall(pattern, string[, flags])
返回string中所有与pattern相匹配的全部字串,返回形式为数组。
re.split(pattern, string, maxsplit=0, flags=0)
用 pattern 分开 string 。最多进行 maxsplit 次分隔
Python中re的match、search、findall、finditer区别 - xushukui - 博客园