python正则表达式的使用(实验代码)
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
Python自1.5版本起增加了re模块,它提供Perl风格的正则表达式模式。
re模块使Python语言拥有全部的正则表达式功能。
compile函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
re模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。
python正则表达式的使用(实验代码),具体代码如下所示:
importre
data='''123452019-05-2013:30:04,102E:/PythonProject/accountReport-20190520/createReport_20190520.py(164):[INFO]start=24h-ago&m=sum:zscore.keys{compared=week,redis=6380,endpoint=192.168.8.11_Redis-b}
2019-05-2013:30:04,133E:/PythonProject/accountReport-20190520/createReport_20190520.py(164):[INFO]start=24h-ago&m=sum:keys{redis=6380,endpoint=192.168.8.120_Redis-sac-a}
'''
#1.1)非编译正则表达式的使用
defre_nocompile():
pattern="report"#匹配时间格式
r=re.findall(pattern,data,flags=re.IGNORECASE)#findall方法返回字符串
print(r)
#1.2)编译的正则表达式的使用(效率高)
defre_compile():
pattern="[0-9]{1,2}\:[0-9]{1,2}\:[0-9]{1,2}"#匹配时间格式
re_obj=re.compile(pattern)#创建一个对象
r=re_obj.findall(data)#findall方法返回字符串
print(r)
#2.1)“匹配”类函数的使用findall、match、search、finditer
defre_match():
pattern="\d+"#匹配数字
r=re.match(pattern,data)#match函数是匹配字符串的开头,类似startwith
ifr:#使用match匹配成功后,返回SRE_MATCH类型的对象,该对象包含了相关模式和原始字符串,包括起始位置和结束位置
print(r)
print(r.start())
print(r.end())
print(r.string)
print(r.group())#group()用来提出分组截获的字符串。group()同group(0)就是匹配正则表达式整体结果。
#group(1)列出第一个括号匹配部分,group(2)列出第二个括号匹配部分,group(3)列出第三个括号匹配部分。
#当然正则表达式中没有括号,group(1)肯定不对了
print(r.re)
else:#match如果匹配不到,返回None
print("False")
defre_search():
pattern="[0-9]{1,2}\:[0-9]{1,2}\:[0-9]{1,2}"#匹配时间格式
r=re.search(pattern,data)#search方法是全部位置的匹配,返回SRE_MATCH对象
print(r)
print(r.start())#起始位置
print(r.end())#结束位置
#finditer返回一个迭代器
defre_finditer():
pattern="\d+"#匹配数字
r=re.finditer(pattern,data)
foriinr:
print(i.group())
#贪婪匹配:总是匹配最长的那个字符串(默认)
#非贪婪匹配:总是匹配最短的那个字符串(在匹配字符串时加上?来实现)
defre_find02():
r1=re.findall("Python.*\.",data)#贪婪匹配
print(r1)
r2=re.findall("Python.*?\.",data)#非贪婪匹配
print(r2)
if__name__=="__main__":
re_nocompile()
re_compile()
re_match()
re_search()
re_finditer()
re_find02()
importre
importrequests
data='''123452019-05-2013:30:04,102E:/PythonProject/accountReport-20190520/createReport_20190520.py(164):[INFO]start=24h-ago&m=sum:zscore.keys{compared=week,redis=6380,endpoint=192.168.8.11_Redis-b}
2019-05-2013:30:04,133E:/PythonProject/accountReport-20190520/createReport_20190520.py(164):[INFO]start=24h-ago&m=sum:keys{redis=6380,endpoint=192.168.8.120_Redis-sac-a}
'''
#1)“修改类”函数
#1.1)sub函数进行匹配并替换,返回替换后的字符串
defre_sub():
pattern="[0-9]{1,2}\:[0-9]{1,2}\:[0-9]{1,2}"#匹配时间格式
data01=re.sub(pattern,"timeString",data)
print(data01)
#1.2)splite将字符串拆成子串列表,可以同时指定多个分隔符
defre_split():
r=re.split(r"[:\-\=]",data.strip("'"))
print(r)
#2)匹配html的一个例子
defre_html():
r=requests.get("https://www.hao123.com/")
print(r.content)
try:
web=re.findall("(https:.*?.com)",str(r.content))
print(web)
exceptExceptionaserr:
print(err)
if__name__=="__main__":
re_sub()
re_split()
re_html()
总结
以上所述是小编给大家介绍的python正则表达式的使用(实验代码),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!