1、匹配單個(gè)字符與數(shù)
.? ? ? ? ? ? ? ? 匹配除換行符以外的任意字符
[0123456789]? ? []是字符集合,表示匹配方括號(hào)中所包含的任意一個(gè)字符
[sunck]? ? ? ? ? 匹配's','u','n','c','k'中任意一個(gè)字符
[a-z]? ? ? ? ? ? 匹配任意小寫(xiě)字母
[A-Z]? ? ? ? ? ? 匹配任意大寫(xiě)字母
[0-9]? ? ? ? ? ? 匹配任意數(shù)字,類(lèi)似[0123456789]
[0-9a-zA-Z]? ? ? 匹配任意的數(shù)字和字母
[0-9a-zA-Z_]? ? 匹配任意的數(shù)字、字母和下劃線(xiàn)
[^sunck]? ? ? ? 匹配除了sunck這幾個(gè)字母以外的所有字符,中括號(hào)里的^稱(chēng)為脫字符,表示不匹配集合中的字符
[^0-9]? ? ? ? ? 匹配所有的非數(shù)字字符
\d? ? ? ? ? ? ? 匹配數(shù)字,效果同[0-9]
\D? ? ? ? ? ? ? 匹配非數(shù)字字符,效果同[^0-9]
\w? ? ? ? ? ? ? 匹配數(shù)字,字母和下劃線(xiàn),效果同[0-9a-zA-Z_]
\W? ? ? ? ? ? ? 匹配非數(shù)字,字母和下劃線(xiàn),效果同[^0-9a-zA-Z_]
\s? ? ? ? ? ? ? 匹配任意的空白符(空格,換行,回車(chē),換頁(yè),制表),效果同[ \f\n\r\t]
\S? ? ? ? ? ? ? 匹配任意的非空白符,效果同[^ \f\n\r\t]
2、錨字符(邊界字符)
^? ? 行首匹配,和在[]里的^不是一個(gè)意思
$? ? 行尾匹配
\A? ? 匹配字符串開(kāi)始,它和^的區(qū)別是,\A只匹配整個(gè)字符串的開(kāi)頭,即使在re.M模式下也不會(huì)匹配它行的行首
\Z? ? 匹配字符串結(jié)束,它和$的區(qū)別是,\Z只匹配整個(gè)字符串的結(jié)束,即使在re.M模式下也不會(huì)匹配它行的行尾
\b? ? 匹配一個(gè)單詞的邊界,也就是值單詞和空格間的位置
'er\b'可以匹配never,不能匹配nerve
\B? ? 匹配非單詞邊界
3、匹配多個(gè)字符
說(shuō)明:下方的x、y、z均為假設(shè)的普通字符,n、m(非負(fù)整數(shù)),不是正則表達(dá)式的元字符
(xyz)? ? 匹配小括號(hào)內(nèi)的xyz(作為一個(gè)整體去匹配)
x?? ? ? 匹配0個(gè)或者1個(gè)x
x*? ? ? 匹配0個(gè)或者任意多個(gè)x(.* 表示匹配0個(gè)或者任意多個(gè)字符(換行符除外))
x+? ? ? 匹配至少一個(gè)x
x{n}? ? 匹配確定的n個(gè)x(n是一個(gè)非負(fù)整數(shù))
x{n,}? ? 匹配至少n個(gè)x
x{n,m}? 匹配至少n個(gè)最多m個(gè)x。注意:n <= m
x|y? ? ? |表示或,匹配的是x或y
4、特殊
*?? +?? x?? 最小匹配,通常都是盡可能多的匹配,可以使用這種解決貪婪匹配
(?:x)? ? ? ? 類(lèi)似(xyz),但不表示一個(gè)組
#注釋?zhuān)? /*? part1? */? /*? part2? */
print(re.findall(r"http://*.*?/*/", r"/*? part1? */? /*? part2? */"))