>>import re
![]()
1.元字符
正则表达式的元字符有:. $ ^ * + ? {} [ ] | () \
# . 通配符(这里一个通配符代表一个字符)
# ^ (尖角符后面的字符必须要在开头)

# $ (多咯符后面的字符必须要在结尾)
# * (0-多次,匹配符在尾部,贪婪匹配)
# + (1-多次,匹配符在尾部,贪婪匹配)
# ? (尾部字符缺失,同样可以匹配)
# {} (选择贪婪个数,是一个闭区间)
【注意】:* 相当于{0,} + 相当于{1,} ?相当于{0,1}
# [] 或
# | (或,都可取)
# \ (转义符)
\d 匹配一个数字
\D 匹配一个非数字字符
\w 匹配一个非特殊字符
\s 匹配一个空格
\b 匹配一个单词边界
#() (group)
2.原生字符串
r rawstring 避免正则表达式和Python语法的冲突
3.常用的函数
1)findall(寻找匹配字符,并以列表形式返回) 注意:去 '组优先' 用 ?: 实现
2)finditer
3) search(匹配一个字符) .group方法拿到匹配字符
4) match(匹配处于开头位置的一个字符)
![]()
1 # 无分组 2 r = re.match("h\w+", origin) 3 print(r.group()) # 获取匹配到的所有结果 4 print(r.groups()) # 获取模型中匹配到的分组结果 5 print(r.groupdict()) # 获取模型中匹配到的分组结果 6 7 # 有分组 8 9 # 为何要有分组?提取匹配成功的指定内容(先匹配成功全部正则,再匹配成功的局部内容提取出来) 10 11 r = re.match("h(\w+).*(?P<name>\d)$", origin) 12 print(r.group()) # 获取匹配到的所有结果 13 print(r.groups()) # 获取模型中匹配到的分组结果 14 print(r.groupdict()) # 获取模型中匹配到的分组中所有执行了key的组
5) split
6)compile
7)sub&subn (替换,替换了那些返回次数)
4.实例
1)IP地址; 192.168.1.1
>>>re.search('(([01]?\d?\d|2[0-4]\d|25[0-9])\.){3}([01]?\d?\d|2[0-4]\d|25[0-9])','192.168.1.1').group()
>>>192.168.1.1
2)计算器:
>>>























浙公网安备 33010602011771号