字符集是由一对方括号 “[]” 括起来的字符集合。使用字符集,可以匹配多个字符中的一个。
举个例子,比如你使用 c[et]o 匹配到的是 ceo 或 cto ,也就是说 [et] 代表的是一个 e 或者一个 t 。像上面提到的 [a-z] ,就是所有小写字母中的其中一个,这里使用了连字符 “-” 定义一个连续字符的字符范围。当然,像这种写法,里面可以包含多个字符范围的,比如:[0-9a-fa-f] ,匹配单个的十六进制数字,且不分大小写。注意了,字符和范围定义的先后顺序对匹配的结果是没有任何影响的。
其实说了那么多,只是想证明,字符集一对方括号 “[]” 里面的字符关系是或(or)关系,下面看一个例子:
import rea = 'uav,ubv,ucv,uwv,uzv,ucv,uov'# 字符集# 取 u 和 v 中间是 a 或 b 或 c 的字符findall = re.findall('u[abc]v', a)print(findall)# 如果是连续的字母,数字可以使用 - 来代替l = re.findall('u[a-c]v', a)print(l)# 取 u 和 v 中间不是 a 或 b 或 c 的字符re_findall = re.findall('u[^abc]v', a)print(re_findall) 输出的结果:
['uav', 'ubv', 'ucv', 'ucv']['uav', 'ubv', 'ucv', 'ucv']['uwv', 'uzv', 'uov'] 在例子中,使用了取反字符集,也就是在左方括号 “[” 后面紧跟一个尖括号 “^”,就会对字符集取反。需要记住的一点是,取反字符集必须要匹配一个字符。比如:q[^u] 并不意味着:匹配一个 q,后面没有 u 跟着。它意味着:匹配一个 q,后面跟着一个不是 u 的字符。具体可以对比上面例子中输出的结果来理解。
我们都知道,正则表达式本身就定义了一些规则,比如 \d,匹配所有数字字符,其实它是等价于 [0-9],下面也写了个例子,通过字符集的形式解释了这些特殊字符。
import rea = 'uav_ubv_ucv_uwv_uzv_ucv_uov&123-456-789'# 概括字符集# \d 相当于 [0-9] ,匹配所有数字字符# \d 相当于 [^0-9] , 匹配所有非数字字符findall1 = re.findall('\d', a)findall2 = re.findall('[0-9]', a)findall3 = re.findall('\d', a)findall4 = re.findall('[^0-9]', a)print(findall1)print(findall2)print(findall3)print(findall4)# \w 匹配包括下划线的任何单词字符,等价于 [a-za-z0-9_]findall5 = re.findall('\w', a)findall6 = re.findall('[a-za-z0-9_]', a)print(findall5)print(findall6) 输出结果:
普渡科技创始人兼CEO张涛受邀出席美团2021外卖产业大会
我国移动通信行业未来的10个趋势分析
去中心化身份重不重要
晨星半导体获授权ARM Cortex-A9处理器授权
壹沓科技完成B轮融资,近2亿资金将用于数字员工超自动化产品升级
python正则表达式字符集
大联大世平集团联合中山远大推出基于NXP等众多国际大厂技术和产品的电动汽车交流电充电桩解决方案
9亿像素全景,暗光拍摄清晰呈现,vivo X50 Pro+还有新惊喜
高铁烟雾报警器原理
重新振作 这次诺基亚8真的能王者归来吗?真的携骁龙835?
iPhone 8应该会大卖,但中国人早已被苹果伤透了心
陶瓷电容促成电容器行业进步
Dialog针对5G应用提供集成电源解决方案
I2C和SPI通信协议的主要差异在哪?
多功能食品安全检测仪那种比较好?
Jacinto 6 QNX系统汽车解决方案介绍
2009-2011全球连接器厂家收入排名
恩智浦S32G汽车集成平台加速软件定义汽车开发
TOS2000B系列示波器的测试步骤和方法分析
基于X2SON封装的PCB布局限制