r'string'
# 匹配字符串是否以 gaopangpang_ 开头
r'gaopangpang_\w+'
compile()
:将字符串转换为正则表达式对象#导入re模块
import re
'''
prog:正则对象,可以直接调用匹配、替换、分割的方法,不需要再传入正则表达式
pattern:正则表达式
'''
prog = re.compile(pattern)
示例:
import re
#匹配包含高胖胖的字符串
pattern=r"gaopangpang"
#将正则表达式转换成正则表达式对象
prong=re.compile(pattern)
print(type(prong))
#打印内容:
#已经转成正则表达式对象
match()
:从字符串的开始处进行匹配search()
:在整个字符串中搜索第一个匹配的值findall()
:在整个字符串中搜索所有符合正则表达式的字符串,返回列表import re
'''
pattern: 正则表达式
string: 要匹配的字符串
flags: 可选,控制匹配方式
- A:只进行 ASCII 匹配
- I:不区分大小写
- M:将 ^ 和 $ 用于包括整个字符串的开始和结尾的每一行
- S:使用 (.) 字符匹配所有字符(包括换行符)
- X:忽略模式字符串中未转义的空格和注释
'''
re.match(pattern, string, [flags])
re.search(pattern, string, [flags])
re.findall(pattern, string, [flags])
示例1:match
从字符串的开始处进行匹配
import re
#匹配包含以gao开头的字符串
pattern=r"gao\w+"
#将正则表达式转换成正则表达式对象
s1="Gaopangpang is a nice guy."
match1=re.match(pattern,s1,re.I)
print(match1)
print(f"匹配开始位置:{match1.start()}")
print(f"匹配结束位置:{match1.end()}")
print(f"匹配位置的元祖:{match1.span()}")
print(f"要匹配的字符串:{match1.string}")
print(f"匹配的数据:{match1.group()}")
"""
打印结果:
匹配开始位置:0
匹配结束位置:11
匹配位置的元祖:(0, 11)
要匹配的字符串:Gaopangpang is a nice guy.
匹配的数据:Gaopangpang
"""
s2="Everybody like gaopangpang."
match2=re.match(pattern,s2,re.I)
print(match2)
"""
打印结果:
None
"""
示例2:search
在整个字符串中搜索第一个匹配的值
import re
#匹配包含以gao开头的字符串
pattern=r"gao\w+"
#将正则表达式转换成正则表达式对象
s1="Gaopangpang is a nice guy."
match1=re.search(pattern,s1,re.I)
print(match1)
print(f"匹配开始位置:{match1.start()}")
print(f"匹配结束位置:{match1.end()}")
print(f"匹配位置的元祖:{match1.span()}")
print(f"要匹配的字符串:{match1.string}")
print(f"匹配的数据:{match1.group()}")
"""
打印结果:
匹配开始位置:0
匹配结束位置:11
匹配位置的元祖:(0, 11)
要匹配的字符串:Gaopangpang is a nice guy.
匹配的数据:Gaopangpang
"""
s2="Everybody like gaopangpang. Gaopangpang is very happy."
match2=re.search(pattern,s2,re.I)
print(match2)
print(f"匹配开始位置:{match2.start()}")
print(f"匹配结束位置:{match2.end()}")
print(f"匹配位置的元祖:{match2.span()}")
print(f"要匹配的字符串:{match2.string}")
print(f"匹配的数据:{match2.group()}")
"""
打印结果:
匹配开始位置:15
匹配结束位置:26
匹配位置的元祖:(15, 26)
要匹配的字符串:Everybody like gaopangpang. Gaopangpang is very happy.
匹配的数据:gaopangpang
"""
示例3:findall
在整个字符串中搜索所有符合正则表达式的字符串,返回列表
import re
#匹配包含以gao开头的字符串
pattern=r"gao\w+"
s2="Everybody like gaopangpang. Gaopangpang is very happy."
match2=re.findall(pattern,s2,re.I)
print(match2)
"""
打印结果:
['gaopangpang', 'Gaopangpang']
"""
sub()
:实现字符串替换
import re
'''
pattern:正则表达式
repl:要替换的字符串
string:要被查找替换的原始字符串
count:可选,表示替换的最大次数,默认值为 0,表示替换所有匹配
flags:可选,控制匹配方式
'''
re.sub(pattern, repl, string, [count], [flags])
示例:
import re
#匹配手机号码
pattern=r"1[34578]\d{9}"
s1="中奖号码联系电话:13200000001"
match2=re.sub(pattern,'1XXXXXXXXXX',s1)
print(match2)
"""
打印结果:
中奖号码联系电话:1XXXXXXXXXX
"""
split()
:根据正则表达式分割字符串,返回列表
import re
'''
pattern:正则表达式
string:要匹配的字符串
maxsplit:可选,表示最大拆分次数
flags:可选,控制匹配方式
'''
re.split(pattern, string, [maxsplit], [flags])
示例:
import re
#匹配分割符
pattern=r"[?|&]"
#待分割的网址
url="https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=monline_3_dg&wd=%E5%93%88%E5%93%88&fenlei=256&rsv_pq=99fde4c600070362&rsv_t=a8ffxlvPLgOOTFba0r80f2npHbE0bml8%2Bn07CwmlCgjB2dkIrgGxgUfSM3lSG%2F%2BtAlaU&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=6&rsv_sug1=2&rsv_sug7=101&rsv_sug2=0&rsv_btype=t&inputT=398&rsv_sug4=1802"
result=re.split(pattern,url)
print(result)
"""
打印结果:
['https://www.baidu.com/s', 'ie=utf-8', 'f=8', 'rsv_bp=1', 'rsv_idx=1', 'tn=monline_3_dg', 'wd=%E5%93%88%E5%93%88', 'fenlei=256', 'rsv_pq=99fde4c600070362', 'rsv_t=a8ffxlvPLgOOTFba0r80f2npHbE0bml8%2Bn07CwmlCgjB2dkIrgGxgUfSM3lSG%2F%2BtAlaU', 'rqlang=cn', 'rsv_enter=1', 'rsv_dl=tb', 'rsv_sug3=6', 'rsv_sug1=2', 'rsv_sug7=101', 'rsv_sug2=0', 'rsv_btype=t', 'inputT=398', 'rsv_sug4=1802']
"""