正則總結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當做普通字元(把多行作為一個字串匹配)