1.word:
import re
# . 代表除了换行之外的任意字符
# \ 转义字符,间接,\r \t \n
# \d 代表数字
# \D 代表非数字
# \s 代表空格 \t
# \w 代表单词字符 ,大小写字母和数字
# \W 代表非单词字符数字
regex=re.compile(r"\W",re.IGNORECASE)#预编译
print(regex.match("+"))
结果:
2.select:
import re
#"[abcd]"abcd之间取一个,第一个字符在abcd之间
#"[^abcd]"abcd之间取一个,第一个字符不在abcd之间
#[0-9]数字,加个^是非数字
#[a-z]字母
#[]代表一个字符
regex=re.compile("[A-Z][0-9]",re.IGNORECASE)#IGNORE忽略异常忽略大小写
print(regex.match("a2"))
结果:
3.times:
import re
#*代表0次或无限次,+代表一次或者多次
#?代表一次或者零次
#{n}代表n次
#{n,m}代表n到m次
regex=re.compile("\\d{1,2}",re.IGNORECASE)
print(regex.match("9"))
print(regex.match("91"))
print(regex.match("91w"))
print(regex.match("das91w"))
结果:
4.search:
import re
# m=re.match("^the","there the dog is wolf")
# if m is not None:
# print(m.group())
# 搜索^the以the开头
# 搜索$the以the结尾
# \b 表示\w the \W结束符号
#"the\b" mythe结束符
#”the\b“ mytheit 不能
m=re.search(r"\bthe"," mythe ")
if m is not None:
print(m.group())
else:
print("not find")
结果:
5.or:
import re
#|表示两者出现一个即可
#(abc){2} 表示abcabc
#abc{2} 表示abcc
m=re.search("abc|xyz","asd xyzabc ")
if m is not None:
print(m.group())
else:
print("not find")
n=re.search("abc{2,4}","abccc")
if n is not None:
print(n.group())
else:
print("not find")
结果:
6.组合:
import re
import winerror
m=re.search(r"(abc){2}","abcabc")
print(m)
m=re.search(r"(abc|xyz){2}","xyzxyz")#任取一个xyz,abc
print(m)
m=re.search(r"(?:)(abc|xyz){2}","xyzxyz")#?:没啥用,有跟没有没影响
print(m)
m=re.search(r"(((?i)abc){2})","ABcabC")#?i表示忽略大小写
print(m)
m=re.search(r"abc(?#这就是注释,一点用没有)","abc")#?#表示注释
print(m)
m=re.search(r"a(?=bc)","acb")#?表示后面必须跟bc才能匹配a
print(m)
m=re.search(r"a(?!bc)","abj")#?!表示后面必须不能跟着bc才能匹配a
print(m)
m=re.search(r"(?<=bc)a","bca")#?<表示前面必须跟着bc才能匹配a
print(m)
m=re.search(r"(?<!bc)a","bsa")#?<!表示前面必须不能跟着才能匹配a
print(m)
结果:
7.贪婪模式:
import re
print(re.match(r"^(\d+)(0*)$","88480000").groups())#正则表达式默认贪婪
print(re.match(r"^(\d+?)(0*)$","88480000").groups())#非贪婪
结果:
正则表达式默认采用贪婪匹配模式,在该模式下意味着会匹配尽可能长的子串。我们可以使用 将贪婪匹配模式转化为惰性匹配模式
8.标签:
import re
mystr="<title>百度一下,你就知道</title>"
res=re.match("<([A-Za-z]*)>.*<(/[A-Za-z]*)>",mystr)
print(res.group())
#([A-Za-z]*) \\1一一对应
res=re.match("<([A-Za-z]*)>.*<(/\\1)>",mystr)
print(res.group())
结果:
9.标签强化:
import re
mystr="<title>百度一下,你就知道</title>"
mystrs="<HTML><title>百度一下,你就知道</title></HTML>"
res=re.match("<[\w]*>.*</[\w]*>",mystr)
print(res)
res=re.match("<[\w]*><[\w]*>.*</[\w]*></[\w]*>",mystrs)
print(res)
res=re.match("<([\w]*)>.*</\\1>",mystr)
print(res)
结果:
10.标签名称:
import re
#?P<htm1> 名称为htm1 ?P=htm1匹配的是htm1
mystr="<HTML>百度一下,你就知道</HTML>"
res=re.match("<(?P<htm1>\w*)>.*</(?P=htm1)>",mystr)
print(res)
结果: