正則是測試工程師的一個常用知識重點,特別是在自動化測試(斷言)、接口測試(斷言)、以及字符串查找、修改、替換等相關操作時:
\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當做普通字符(把多行作為一個字符串匹配)