正则总结1之匹配内容及数量
正则是测试工程师的一个常用知识重点,特别是在自动化测试(断言)、接口测试(断言)、以及字符串查找、修改、替换等相关操作时:
\d #表示数字
\D #表示非数字
\w #表示数字或字母
\W #表示既非数字也非字母
\s #表示空白\n \r \t
\S #表示非空白
\b #表示以空白开头、结尾或非其他字符拼接的如re.serach(r"\btest\b","test "),匹配test
. #表示匹配一个非\n的任意字符,可以多个点.多个点表示匹配多个
.. #表示匹配两个连续非\n的任意字符,可以多个点.多个点表示匹配多个连续非\n的任意字符
? #抑制贪婪性,按最少的匹配
+ #表示一个或多个
+? #表示匹配一个
* #表示0个或者多个,如果没有匹配上,也表示匹配成功,返回''空
*? #表示匹配为空,匹配成功
() #表示将匹配的内容分组,匹配成功后,可以通过group()来指定输出的部分
[] #表示[]内范围内的单个字符
[]+ 表示[]内范围内的尽可能多的字符
{2} #表示匹配的长度或数量,匹配2个数量
{1,3} #表示1到3个数量
$ #表示从结尾匹配,示例:re.search(r"55$","123frrt55"),匹配出结尾55
\Z #表示从结尾匹配,等价于$
^ #无括号时,表示从开头匹配,示例:re.search(r"^123","123frrt"),匹配出开头123
\A #从开头匹配,等价于^
re.I #忽略大小写,示例:re.search(r"a","BCA",re.I),匹配出A
re.DOTALL #与.搭配使用时,点可以匹配任意字符,包含\n换行
re.M #匹配多行末尾是否匹配re.search(r"a$","BCAn\dea\n45a\n",re.M)
re.S #多行时,把\n当做普通字符(把多行作为一个字符串匹配)