共计 1321 个字符,预计需要花费 4 分钟才能阅读完成。
罕用函数:
1.re.match 开始地位匹配, 没有匹配到就返回 (即便正则表达式没有用 ^ 申明匹配结尾)
input="入门小站" | |
#P<name> 分组命名 | |
reg=re.compile(r'(?P<name> 入门)') | |
res=reg.match(input) | |
if res: | |
print(res.groupdict()) | |
print(res.groups()) | |
print(res.groups()) |
{'name': '入门'} | |
('入门',) | |
('入门',) | |
2.re.search 搜寻整个字符串
# 扫描整个 字符串 找到匹配款式的第一个地位,并返回一个相应的 匹配对象。如果没有匹配,就返回一个 None | |
input=''' | |
入门小站 | |
入门 | |
入门教程 | |
'''reg=re.compile(r' 入门 (?: 小站 | 教程)',re.S) | |
res=reg.search(input) | |
if res: | |
print(res.group()) |
入门小站 | |
3.re.findall 查找到字符串所有的匹配项,并返回一个 list
input=''' | |
入门小站 | |
入门 | |
入门教程 | |
''' | |
# re.M 多行模式匹配 | |
reg=re.compile(r'^ 入门 (?: 小站 | 教程)$',re.M) | |
res=reg.findall(input) | |
if res: | |
print(res) |
['入门小站', '入门教程'] | |
4.re.split 字符串宰割
# split(pattern, string, maxsplit=0, flags=0) | |
# maxsplit 最大的宰割次数 | |
input=''' | |
入门 | |
123 | |
小站 | |
dd | |
入门 | |
'''reg=re.compile(r'[a-z0-9]+') | |
res=reg.split(input) | |
print(res) | |
reg=re.compile(r'[a-z0-9]+') | |
res=reg.split(input,1) | |
print(res) |
['\n 入门 \n', '\n 小站 \n', '\n 入门 \n'] | |
['\n 入门 \n', '\n 小站 \ndd\n 入门 \n'] | |
5. re.sub 字符串替换
# 语法 sub(pattern, repl, string, count=0, flags=0) | |
# repl 被替换成的字符串 | |
# count 指定替换的次数 | |
input=''' | |
入门 | |
123 | |
小站 | |
456 | |
dd | |
入门 | |
'''reg=re.compile(r'([a-z0-9]{1,})',re.M) | |
res=reg.sub('11',input) | |
print(res) | |
# 替换 1 次 | |
reg=re.compile(r'([a-z0-9]{1,})',re.M) | |
res=reg.sub('11',input,1) | |
print(res) |
入门 | |
11 | |
小站 | |
11 | |
11 | |
入门 | |
入门 | |
11 | |
小站 | |
456 | |
dd | |
入门 | |
6. re.subn
# 语法 subn(pattern, repl, string, count=0, flags=0) | |
# repl 被替换成的字符串 | |
# count 指定替换的次数 | |
# 返回后果中蕴含替换的次数 | |
input=''' | |
入门 | |
123 | |
小站 | |
456 | |
dd | |
入门 | |
'''reg=re.compile(r'([a-z0-9]{1,})',re.M) | |
res=reg.subn('11',input) | |
print(res) |
('\n 入门 \n11\n 小站 \n11\n11\n 入门 \n', 3) | |
正文完