特殊字符
1. 基本元字符
.
:匹配除換行符以外的任意單個字符。
*
:匹配前面的元素零次或多次。
+
:匹配前面的元素一次或多次。
?
:匹配前面的元素零次或一次。
2. 定量符
{n}
:匹配前面的元素恰好 n 次。
{n,}
:匹配前面的元素至少 n 次。
{n,m}
:匹配前面的元素至少 n 次,但不超過 m 次。
3. 字符類
[abc]
:匹配方括號內的任意一個字符(在這個例子中是 a、b 或 c)。
[^abc]
:匹配不在方括號內的任意一個字符(在這個例子中是除了 a、b 和 c 以外的任何字符)。
[a-z]
:匹配指定范圍內的任意一個字符(在這個例子中是從 a 到 z 的任意一個小寫字母)。
\d
:匹配任意一個數字,等同于 [0-9]。
\D
:匹配任意一個非數字字符,等同于 [^0-9]。
\w
:匹配任意一個字母數字字符,包括下劃線,等同于 [a-zA-Z0-9_]。
\W
:匹配任意一個非字母數字字符,包括下劃線,等同于 [^a-zA-Z0-9_]。
\s
:匹配任意一個空白字符,包括空格、制表符、換頁符等,等同于 [ \t\n\r\f\v]。
\S
:匹配任意一個非空白字符,等同于 [^ \t\n\r\f\v]。
4. 錨點
^
:匹配輸入字符串的開始位置。
$
:匹配輸入字符串的結束位置。
\b
:匹配單詞邊界。
\B
:匹配非單詞邊界。
5. 分組和引用
(abc)
:將 abc 視為一個整體進行匹配,并捕獲該分組。
(?:abc)
:將 abc 視為一個整體進行匹配,但不捕獲該分組。
\1、\2
等:引用之前捕獲的分組。
6. 選擇
a|b
:匹配 a 或 b。
7. 轉義字符
\
:用于轉義特殊字符,例如 . 匹配實際的點號,而不是任意字符。
常用方法
- 1.
?re.search(pattern, string[, flags])?
在字符串中搜索第一個與正則表達式模式匹配的結果,返回一個Match對象,如果沒有找到匹配項則返回None。 - 2.
?re.match(pattern, string[, flags])?
從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回None。 - 3.
?re.fullmatch(pattern, string[, flags])?
如果整個字符串完全匹配正則表達式模式,則返回一個Match對象,否則返回None。 - 4.
?re.findall(pattern, string[, flags])?
返回字符串中所有與正則表達式模式匹配的子串,作為一個列表返回。 - 5.
?re.finditer(pattern, string[, flags])?
返回一個迭代器,其中每個元素都是一個Match對象,對應于字符串中所有與正則表達式模式匹配的部分。 - 6.
?re.sub(pattern, repl, string[, count, flags])?
將字符串中所有與正則表達式模式匹配的部分替換為指定的字符串,并返回替換后的字符串。 - 7.
?re.split(pattern, string[, maxsplit, flags])?
根據正則表達式模式分割字符串,返回一個列表,包含分割后的各個部分。 - 8.
?re.compile(pattern[, flags])?
編譯正則表達式模式,返回一個正則表達式對象,可以用于后續的匹配操作,提高效率。
常見正則使用
QQ號:[1 - 9][0 - 9]{4, }(騰訊QQ號從10000開始)
帳號(字母開頭,允許5-16字節,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
手機號碼:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
密碼(以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線):^[a-zA-Z]\w{5,17}$
身份證號(15位、18位數字):^\d{15}|\d{18}$
短身份證號碼(數字、字母x結尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$