Python 正则表达式常用特殊字符及其含义
以下是 Python 正则表达式常用特殊字符及其含义 的全面整理,涵盖了常见和重要的正则符号,以及它们的示例,适合用来写博客或学习使用:
Python 正则表达式常用特殊字符及其含义
1. .
(点号)
\n
以外的任意单个字符。import re
pattern = r"a.b"
print(re.match(pattern, "acb")) # 匹配成功,"a.b" 中间任意字符
print(re.match(pattern, "a\nb")) # 不匹配,中间是换行符
2. ^
(脱字符)
pattern = r"^Hello"
print(re.match(pattern, "Hello world")) # 匹配成功
print(re.match(pattern, "world Hello")) # 不匹配
3. $
(美元符)
pattern = r"world$"
print(re.search(pattern, "Hello world")) # 匹配成功
print(re.search(pattern, "Hello world!")) # 不匹配
4. *
(星号)
pattern = r"ab*"
print(re.match(pattern, "a")) # 匹配成功,b 出现零次
print(re.match(pattern, "abbb")) # 匹配成功,b 出现多次
5. +
(加号)
pattern = r"ab+"
print(re.match(pattern, "ab")) # 匹配成功,b 出现一次
print(re.match(pattern, "a")) # 不匹配,至少需要一个 b
6. ?
(问号)
pattern = r"ab?"
print(re.match(pattern, "a")) # 匹配成功,b 出现零次
print(re.match(pattern, "ab")) # 匹配成功,b 出现一次
print(re.match(pattern, "abb")) # 不匹配,b 出现两次
7. {n}
, {n,}
, {n,m}
(量词限定符)
{n}
:匹配前一个字符恰好 n 次。{n,}
:匹配至少 n 次。{n,m}
:匹配至少 n 次,至多 m 次。pattern = r"ab{2,4}"
print(re.match(pattern, "abb")) # 匹配成功,b 出现 2 次
print(re.match(pattern, "abbbb")) # 不匹配,b 超过 4 次
8. [...]
(字符类)
[a-z]
:表示范围,匹配从 a
到 z
的任意字符。[^...]
:取反,匹配不在方括号内的任意字符。pattern = r"[aeiou]"
print(re.match(pattern, "apple")) # 匹配成功,匹配元音字母 'a'
pattern2 = r"[^aeiou]"
print(re.match(pattern2, "hello")) # 匹配 'h',不是元音字母
9. -
(连字符/减号)
[a-z]
:从 a
到 z
。[A-Z]
:从 A
到 Z
。[-]
:如果 -
出现在开头或结尾,匹配减号本身。pattern = r"[a-z0-9]"
print(re.match(pattern, "5")) # 匹配成功,数字在范围内
print(re.match(pattern, "g")) # 匹配成功,字母在范围内
10. |
(管道符)
pattern = r"cat|dog"
print(re.match(pattern, "cat")) # 匹配成功
print(re.match(pattern, "dog")) # 匹配成功
11. ()
(分组和捕获)
pattern = r"(ab)+"
print(re.match(pattern, "abab")) # 匹配成功
12. \
(反斜杠)
\d
:匹配数字 [0-9]
。\s
:匹配空白字符(如空格、制表符)。\w
:匹配字母、数字和下划线 [a-zA-Z0-9_]
。\D
、\S
、\W
:与上述序列的反义。pattern = r"\d+"
print(re.match(pattern, "12345")) # 匹配成功
print(re.match(pattern, "abc")) # 不匹配
13. \b
和 \B
(单词边界)
\b
:匹配单词边界。\B
:匹配非单词边界。pattern = r"\bcat\b"
print(re.search(pattern, "a cat sat")) # 匹配成功,完整的单词 'cat'
pattern2 = r"cat\B"
print(re.search(pattern2, "concatenate")) # 匹配成功,'cat' 后非边界
14. 零宽断言 (Lookaround)
(?=...)
:正向肯定预查。(?!...)
:正向否定预查。(?<=...)
:后向肯定预查。(?<!...)
:后向否定预查。pattern = r"(?<=\$)\d+"
print(re.search(pattern, "价格是$100")) # 匹配 '100',不包括 '$'
15. 命名组和引用
(?P<name>...)
:定义命名分组。(?P=name)
:引用命名分组。pattern = r"(?P<number>\d+)\s+(?P=number)"
print(re.match(pattern, "123 123")) # 匹配两个相同的数字
以上内容全面涵盖了 Python 正则表达式中的常用特殊字符及其含义,并结合示例展示了每个符号的实际用法,适合用于博客或深入学习。
作者:遇到BUG就睡觉