import re
string1="abcdfphp345pythony_py"#我们分别让string1与下面的pattern进行匹配
pattern1=".python..."#.是匹配除了换行符以外的字符
pattern2="^abd"
pattern3="^abc"
pattern4="py$"
pattern5="ay$"
pattern6="py.*n"
pattern7="cd{2}"
pattern8="cd{3,}"
pattern9="python|php"#可以把|当成‘或’理解
pattern10="(cd){1,}"#小括号里会被当成一个整体使用,这里的意思是cd会至少出现一次
pattern11="cd{1,}"#这里就是d会至少出现一次
print(re.search(pattern1,string1))
print(re.search(pattern2,string1))
print(re.search(pattern3,string1))
print(re.search(pattern4,string1))
print(re.search(pattern5,string1))
print(re.search(pattern6,string1))
print(re.search(pattern7,string1))
print(re.search(pattern8,string1))
print(re.search(pattern9,string1))
print(re.search(pattern10,string1))
print(re.search(pattern11,string1))
#结果:
#<_sre.sre_match object; span=(10, 20), match='5pythony_p'>
#none
#<_sre.sre_match object; span=(0, 3), match='abc'>
#<_sre.sre_match object; span=(19, 21), match='py'>
#none
#<_sre.sre_match object; span=(11, 17), match='python'>
#none
#none
#<_sre.sre_match object; span=(5, 8), match='php'>
#<_sre.sre_match object; span=(2, 4), match='cd'>
#<_sre.sre_match object; span=(2, 4), match='cd'>
符号
|
含义
|
i
|
匹配时忽略大小写
|
m
|
多行匹配
|
l
|
做本地化识别
|
u
|
根据unicode字符及解析字符
|
s
|
让.匹配包括换行符,使用后.就可以匹配任意字符了
|
通过re.search(pattern1,string,re.i)修改即可
贪婪模式与懒惰模式
贪婪模式核心就是尽可能多的匹配,懒惰模式就是尽可能少的匹配。
pattern1="p.*y"#贪婪模式
pattern2="p.*?y"#懒惰模式,采用的就是就近匹配原则
print(re.search(pattern1,string1))
print(re.search(pattern2,string1))
#结果
#<_sre.sre_match object; span=(5, 21), match='php345pythony_py'>
#<_sre.sre_match object; span=(5, 13), match='php345py'>
import re
string="dpythonhbaigdukpythonabvjsvawegadbkvj"
pattern =".python."
print(re.match(pattern,string))
#会从string起始位置(开头)开始匹配,不满足返回none,满足则返回匹配结果
#后面的不会匹配到
print(re.match(pattern,string).span())#会输出匹配结果在源字符串的位置
print(re.search(pattern,string))#会查找整个字符串得到匹配结果
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!!
点击进行留言回复
网友评论