网站布局怎么做,自适应h5网站,简单的asp网站源码,内蒙住房和城乡建设部网站首页大家好#xff01;我是码银#x1f970;
欢迎关注#x1f970;#xff1a;
CSDN#xff1a;码银
公众号#xff1a;码银学编程 正文
正则表达式
粗略的定义#xff1a;正则表达式是一个特殊的字符序列#xff0c;帮助用户非常便捷的检查一个字符串是否符合某种模…
大家好我是码银
欢迎关注
CSDN码银
公众号码银学编程 正文
正则表达式
粗略的定义正则表达式是一个特殊的字符序列帮助用户非常便捷的检查一个字符串是否符合某种模式。例如平时我们的登陆密码必须是字母和数字的组合就可以使用正则表达式。
正则表达式的特点灵活性、逻辑性和功能性非常强可以迅速地用极简单的方式达到字符串的复杂控制。然而对于刚接触的人来说可能会觉得比较晦涩难懂。
Python有关正则表达式的方法是在re模块内所以使用正则表达式需要导入re模块。
import re
本篇文章先介绍一下re模块中的几个函数
函数功能re.match()用于从字符串的开始位置进行匹配如果起始位置匹配 成功结果为Match对象否则结果为None。re.search()用于在整个字符串中搜索第一个匹配的值如果匹配成 功结果为Match对象否则结果为None。re.findall()用于在整个字符串搜索所有符合正则表达式的值结果 是一个列表类型。re.sub (用于实现对字符串中指定子串的替换re.split()字符串中aplit(方法功能相同都是分隔字符串
re.match()
这个方法和re.search()方法类似但是也有点小差别的
re.match从字符串的开头开始匹配也就是说待匹配字符在中间是匹配不到的如果找到匹配项则返回一个匹配对象如果没有找到匹配项则返回None。re.search在整个字符串中搜索匹配项如果找到匹配项则返回一个匹配对象如果没有找到匹配项则返回None。
import re # 定义一个字符串变量msg包含一段描述
msg During my two years living in London, I found that the British people really enjoy eating and drinking outdoors. # 定义一个字符串变量pattern包含我们要在msg中搜索的文本模式
pattern During # 使用re.match函数搜索msg中与pattern匹配的文本。如果找到匹配项则返回一个匹配对象否则返回None
txt re.match(pattern,msg) # 检查是否找到了匹配项
if txt!None : # 如果找到了匹配项则打印匹配的文本 print(测试1输出: , txt.group())
else: # 如果没有找到匹配项则打印“测试1搜寻失败” print(测试1搜寻失败) # 定义另一个字符串变量pattern2包含我们要在msg中搜索的另一个文本模式
pattern2my txt re .match(pattern2, msg) if txt!None: print(测试2输出:,txt.group())
else: print(测试2搜寻失败) re.search()
由于re.search()方发是全文搜索所以文章中只要出现对应字符串开头、中间位置都无所谓这是与re.match最大的区别就会返回正确结果。
import remsg During my two years living in London, I found that the British people really enjoy eating and drinking outdoors.
pattern During
txt re.search(pattern, msg)if txt ! None:print(测试1输出: , txt.group())
else: print(测试1搜寻失败) pattern2 my
txt re.search(pattern2, msg)if txt ! None:print(测试2输出:, txt.group())
else:print(测试2搜寻失败)
输出结果
测试1输出: During
测试2输出: myre.findall() re.findall(pattern, string, flags0)用于在整个字符串搜索所有符合正则表达式的值结果 是一个列表类型 pattern正则表达式模式用于匹配字符串。string要搜索的字符串。flags可选参数指定正则表达式的匹配选项如多行匹配、忽略大小写等。 import re# 定义一个正则表达式模式匹配所有的数字
pattern r\d# 要搜索的字符串
string abc123 def456 ghi789# 使用 re.findall() 查找所有匹配项
matches re.findall(pattern, string)print(matches)
其中\d是“元字符”具有特殊意义的专用字符在另外一章文章中在做解释吧。
在上面的示例中我们定义了一个正则表达式模式 \d用于匹配一个或多个数字。然后我们使用 re.findall() 函数在字符串 abc123 def456 ghi789 中查找所有匹配项。最后我们将结果打印出来可以看到成功匹配到了所有的数字。
re.sub ( re.sub(pattern, repl, string, count0, flags0)用于在字符串中使用正则表达式进行查找和替换 pattern正则表达式模式用于匹配字符串。repl替换模式表示找到匹配项后要替换成的字符串。string要搜索的字符串。count可选参数指定替换操作的次数默认为 0 表示替换所有匹配项。flags可选参数指定正则表达式的匹配选项如多行匹配、忽略大小写等。 import re
msg During my two years living in London
pattern1 years
#欲搜寻字符串
newstr days
#新字符串
txt re.sub(pattern1 ,newstr ,msg)
#如果找到则取代
if txt ! msg:print(取代成功:, txt)
else:print(取代失败:,txt)pattern2 Eli Thomson
#欲搜寻字符串
txt re.sub(pattern2,newstr,msg)
#如果找到则取代
if txt! msg:print(取代成功:,txt)
else:print(取代失败: ,txt)
D:\anaconda2019\python.exe D:/pyprogect/正则表达式/test1.py
取代成功: During my two days living in London
取代失败: During my two years living in London
re.split() re.split(pattern, string, maxsplit0, flags0)用于根据正则表达式模式将字符串分割成多个子字符串并返回一个包含所有子字符串的列表。 pattern正则表达式模式用于指定分割规则。string要分割的字符串。maxsplit可选参数指定最大分割次数默认为 0 表示不限制分割次数。sflags可选参数指定正则表达式的匹配选项如多行匹配、忽略大小写等。 import reshttps://www.baidu.com/s?wdCSDNieutf-8tn54093922_14_hao_pg
pattern[?|]
txtre.split(pattern,s)
print(txt)pattern ,
string apple,banana,orange
split_strings re.split(pattern, string)
print(split_strings) # 输出: [apple, banana, orange]输出结果
D:\anaconda2019\python.exe D:/pyprogect/正则表达式/test2.py
[https://www.baidu.com/s, wdCSDN, ieutf-8, tn54093922_14_hao_pg]
[apple, banana, orange]Process finished with exit code 0