Python3常用正则表达式

常用函数:

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)



阅读 159

推荐阅读