#调用
import re
raw string 类型「原生字符串类型」
re 库采用此类型表示正则表达式
#例如
r'[1-9]\d{5}'
r'\d{3}-\d{8}|\d{4}-\d{7}'
raw string 是不包含对转义符再次转义的字符串string 类型表达(需要对转义字符再次转义0_0):
r'[1-9]\\d{5}'
r'\d{3}-\\d{8}|\\d{4}-\\d{7}'
但是比较复杂,
所以有转义字符时尽量使用 raw string 类型表示。
re.search(pattern, string, flags=0)
#在一个字符串中搜索匹配正则表达式的第一个位置,返回 match 对象
pattern : #正则表达式的字符串或原生字符串表示
string : #待匹配字符串
flags : #正则表达式使用时的控制标记
>>> import re
>>> a = "123asd456"
>>> match = re.search(r"(\d*)([a-z]*)(\d*)",a)
>>> if match:
print(match.groud(0)) #返回整体
123asd456
>>> print(match.groud(1))
123
>>> print(match.groud(2))
asd
>>> print(match.groud(3))
456
>>>
正则表达式中的三组括号把匹配结果分成三组
group() 同 group(0) 就是匹配正则表达式整体结果
group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分。
没有匹配成功的,re.search()返回None
re.match(pattern, string, flags=0)
#从一个字符串的开始位置起匹配正则表达式,返回 match 对象
>>> import re
>>> match = re.match(r'\d{3}','abc123')
>>> if match:
match.group(0)
>>> match.group(0)
Traceback (most recent call last):
File "", line 1, in
match.group(0)
AttributeError: 'NoneType' object has no attribute 'group'
>>> match = re.match(r'\d{3}','123abc')
>>> if match:
match.group(0)
'123'
>>>
re.findall(pattern, string, flags=0)
#搜索字符串,以列表类型返回全部能匹配的子串
>>> import re
>>> ls = re.findall(r'\d{3}','123abc456def789ghi')
>>> ls
['123', '456', '789']
>>>
re.split(pattern, string, maxsplit=0, flags=0)
#将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
maxsplit: #大分割数,剩余部分作为后一个元素输出
>>> import re
>>> re.split(r'\d{3}','123abc456def789ghi')
['', 'abc', 'def', 'ghi']
>>> re.split(r'\d{3}','123abc456def789ghi',maxsplit=1)
['', 'abc456def789ghi']
>>> re.split(r'\d{3}','123abc456def789ghi',maxsplit=2)
['', 'abc', 'def789ghi']
>>>
re.finditer(pattern,string,flags=0)
#搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是 match 对象
>>> import re
>>> for i in re.finditer(r'\d{3}','123abc456def789ghi'):
if i:
print(i.group(0))
123
456
789
re.sub(pattern, repl, string, count=0, flags=0)
#在一个字符串中替换所有匹配正则表达式的子串 返回替换后的字符串
repl: #替换匹配字符串的字符串
count : #匹配的大替换次数
>>> import re
>>> re.sub(r'\d{3}', ' QWE ', '123abc456def789ghi')
' QWE abc QWE def QWE ghi'
>>>
re.subn(pattern, repl, string, count=0, flags=0)
#返回替换次数
>>> print(re.subn("g.t","have",'I get A, I got B ,I gut C'))
('I have A, I have B ,I have C', 3)
>>>
re.compile(pattern,flags=0)
#编译正则表达式模式,返回一个对象的模式。
>>> rst=re.search(r'[1‐9]\d{5}', 'BIT 100081')
#函数式用法:一次性操作
>>> pat=re.compile(r'[1‐9]\d{5}')
>>> rst=pat.search('BIT 100081')
#面向对象用法:编译后的多次操作
编译成对象,可以提高一点「效率」。