1.元字符
.
:匹配除换行符以外的任一字符
\w
:匹配字母or数字or下划线
\s
:任一空白符
\d
:任一数字
\W
:匹配非字母or数字or下划线
\S
:匹配非空白符
\D
:匹配非数字
\n
:换行符
\t
:制表符
^
:字符串开始
$
:字符串结尾
a|b
:匹配字符a或字符b
()
:匹配括号内的表达式,也表示一个组
[]
:匹配字符组中的字符
[^...]
:匹配除字符组中的所有字符
2.量词
控制元字符出现的次数
*
:重复0次or更多次
+
:重复1次or更多次
?
:重复0次or1次
{n}
:重复n次,n为具体的整数
{n,}
:重复n次or更多次
{n,m}
:重复n~m次
3.贪婪匹配和惰性匹配
.*
:贪婪匹配
.*?
:惰性匹配
❤️ 例1:
import re
str = '王老师对肖老师说:“肖老师没有妆也很帅啊”'
pattern1 = '王老师.*肖老师' #贪婪
pattern2 = '王老师.*?肖老师' #惰性
result1 = re.search(pattern1,str)
result2 = re.search(pattern2,str)
print(result1.group(0),'\n',result2.group(0))
王老师对肖老师说:“肖老师
王老师对肖老师
❤️ 例2:
import re
str = '<div class="wyb">王一博</div><div class="xz">肖战</div>'
pattern1 = '<div class=".*?">(.*?)</div>'
pattern2 = '<div class=".*">(.*?)</div>'
pattern3 = '<div class=".*?">(.*)</div>'
result1 = re.findall(pattern1,str)
#匹配到的句子分别是:<div class="wyb">王一博</div> 以及 <div class="xz">肖战</div>
result2 = re.findall(pattern2,str)
#<div class=".*"> 匹配的是:<div class="wyb">王一博</div><div class="xz"> ;.*? 匹配的是:肖战
result3 = re.findall(pattern3,str)
#<div class=".*?"> 匹配的是:<div class="wyb"> ;.* 匹配的是:王一博</div><div class="xz">肖战
print(result1)
print(result2)
print(result3)
['王一博', '肖战']
['肖战']
['王一博</div><div class="xz">肖战']