1.字符匹配:
a
:匹配字符 a
。
abc
:匹配字符串 abc
。
import re
result = re.search(r"a", "abcabcd", re.I)
print(result, type(result), result.start(), result.end(), result.group())
result = re.findall(r"abc", "abcabcd", re.I)
print(result)
2.特殊字符:
.
:匹配除换行符外的任何单个字符。
import re
result = re.findall(r".", "abc123=+^$( &% \n", re.S)
print(result)
\d
:匹配任何数字,相当于 [0-9]
。
import re
result = re.findall(r"\d", "123abc=+*&%#_(^@!")
print(result)
\D
:匹配任何非数字字符。
import re
result = re.findall(r"\D", "123abc=+*&%#_(^@!")
print(result)
\w
:匹配任何字母数字字符,相当于 [a-zA-Z0-9_]
。
import re
result = re.findall(r"\w", "123abc=+*&%#_(^@!")
print(result)
\W
:匹配任何非字母数字字符。
import re
result = re.findall(r"\W", "123abc=+*&%#_(^@!")
print(result)
\s
:匹配任何空白字符(空格、制表符、换行符等)。
import re
result = re.findall(r"\s", " 123 abc =+*& %#_(^@!")
print(result)
\S
:匹配任何非空白字符。
import re
result = re.findall(r"\S", " 123 abc =+*& %#_(^@!")
print(result)
3.字符集:
[abc]
:匹配字符 a
、b
或 c
中的任何一个。
import re
result = re.match(r"[abc]", "abcabcd")
print(result)
[a-z]
:匹配小写字母中的任何一个。
[A-Z]
:匹配大写字母中的任何一个。
[0-9]
:匹配任何数字。
import re
result = re.findall(r"[123]", "12345abcdef")
print(result)
result = re.findall(r"[1-5a-f]", "12345abcdef")
print(result)
4.字符集的否定:
[^abc]
:匹配除 a
、b
和 c
之外的任何字符。
import re
result = re.findall(r"^abc", "abc123=+^$ \na( &% ", re.M)
print(result)
5.数量词:
*
:匹配前面的元素零次或多次。
import re
result = re.findall(r"\d*", "12345")
print(result)
result = re.findall(r"\d*?", "12345")
print(result)
+
:匹配前面的元素一次或多次。
import re
result = re.findall(r"\d+", "12345")
print(result)
result = re.findall(r"\d+?", "12345")
print(result)
?
:匹配前面的元素零次或一次。
import re
result = re.findall(r"\d?", "12345")
print(result)
result = re.findall(r"\d??", "12345")
print(result)
{n}
:匹配前面的元素正好 n
次。
{n,}
:匹配前面的元素至少 n
次。
{n,m}
:匹配前面的元素至少 n
次,但不超过 m
次。
import re
result = re.findall(r"\d{3}", "12345")
print(result)
result = re.findall(r"\d{2,4}?", "12345")
print(result)
6.位置与边界:
^
:匹配输入字符串的开始位置。(re.S,re.M 可以多行检测)
import re
result = re.findall(r"^a", "abc123=+^$ \na( &% ", re.M)
print(result)
$
:匹配输入字符串的结束位置。
import re
result = re.findall(r" $", "abc123=+^$ \na( &% ", re.M)
print(result)
\b
:匹配单词边界。
import re
result = re.findall(r"\b", "abcdef")
print(result)
\B
:匹配非单词边界。
import re
result = re.findall(r"\B", "abcdef")
print(result)
7.分组和选择:
(abc)
:匹配并捕获子表达式 abc
。
import re
result = re.search(r"(.*)4(.*)c(.*)f", "12345abcdef")
print(result, result.group(), result.group(1), result.group(2), result.group(3))
result = re.findall(r"(.*)4(.*)c(.*)f", "12345abcdef")
print(result[0][0], result[0][1], result[0][2])
a|b
:匹配 a
或 b
。
import re
result = re.findall(r"[1-5]|[a-f]", "12345abcdef")
print(result)