常用方法
-
re.compile(pattern)
:- 编译正则表达式模式,返回一个模式对象,用于匹配操作。
- 提高匹配效率,适用于多次匹配的情况。
-
match()
:- 从字符串开头开始匹配,只有在字符串的开头匹配成功时,才返回匹配对象。
- 常用于验证字符串是否符合某种模式。
-
search()
:- 在字符串中搜索第一个匹配的子串,返回匹配对象。
- 用于查找字符串中的某个模式。
-
findall()
:- 返回所有匹配的子串,结果以列表的形式返回。
- 用于获取字符串中所有符合模式的部分。
-
group(n=0)
:- 从匹配对象中提取匹配的子串。
group(0)
返回整个匹配;group(1)
返回第一个捕获组,以此类推。
常用符号及其组合
-
.
:- 匹配任意单个字符(除了换行符)。
- 例如:
a.b
匹配"aab"
,"acb"
等,但不匹配"ab"
。
-
^
:- 匹配字符串的开头。
- 例如:
^Hello
匹配以"Hello"
开头的字符串。
-
$
:- 匹配字符串的结尾。
- 例如:
world$
匹配以"world"
结尾的字符串。
-
*
:- 匹配前面的字符 零次或多次。
- 例如:
a*
匹配空字符串、"a"
,"aa"
等。
-
+
:- 匹配前面的字符 一次或多次。
- 例如:
a+
匹配"a"
,"aa"
,"aaa"
等,但不匹配空字符串。
-
?
:- 匹配前面的字符 零次或一次。
- 例如:
a?
匹配空字符串、"a"
。
-
{n}
:- 匹配前面的字符 恰好 n 次。
- 例如:
a{3}
匹配"aaa"
。
-
{n,}
:- 匹配前面的字符 至少 n 次。
- 例如:
a{2,}
匹配"aa"
,"aaa"
,"aaaa"
等。
-
{n,m}
:- 匹配前面的字符 至少 n 次,至多 m 次。
- 例如:
a{2,4}
匹配"aa"
,"aaa"
,"aaaa"
。
-
[]
:- 匹配方括号中的任意字符。
- 例如:
[abc]
匹配"a"
,"b"
,"c"
中的任意一个。
-
|
:- 表示逻辑“或”,匹配左右任意一侧的表达式。
- 例如:
a|b
匹配"a"
或"b"
。
-
()
:- 用于分组和捕获,匹配并保存组内的内容。
- 例如:
(abc)+
匹配"abc"
,"abcabc"
等。
-
\d
:- 匹配任意数字字符,相当于
[0-9]
。 - 例如:
\d{3}
匹配任意三位数字。
- 匹配任意数字字符,相当于
-
\w
:- 匹配任意字母、数字或下划线字符,相当于
[a-zA-Z0-9_]
。 - 例如:
\w+
匹配一个或多个字母、数字或下划线。
- 匹配任意字母、数字或下划线字符,相当于
-
\s
:- 匹配任意空白字符(空格、制表符等)。
- 例如:
\s+
匹配一个或多个空白字符。
-
\D
、\W
、\S
:- 分别匹配非数字、非字母/数字/下划线、非空格。
-
[abc]
:- 匹配方括号内的 任意字符(如
a
、b
或c
)。
- 匹配方括号内的 任意字符(如
-
[^abc]
:- 匹配 不在方括号内 的任意字符。
-
不区分大小写:
- 使用
re.IGNORECASE
或简写re.I
作为标志,不区分大小写匹配。 - 例如:
re.compile(r'spam', re.I)
可以匹配"spam"
、"Spam"
或"SPAM"
。
- 使用
-
sub()
方法:- 用于替换字符串中符合正则表达式的部分。
- 语法:
re.sub(pattern, repl, string)
- 例如:
re.sub(r'\d+', 'NUMBER', 'Order 123')
会将"123"
替换为"NUMBER"
。
-
三重引号表达式:
- 用三重引号
'''pattern'''
或"""pattern"""
来表示多行的正则表达式,以提高可读性。
- 用三重引号
示例组合
-
邮箱验证:
r'\w+@\w+\.\w+'
匹配类似"[email protected]"
的邮箱格式。
-
电话号码验证:
r'\d{3}-\d{3}-\d{4}'
匹配类似"123-456-7890"
的电话号码格式。
-
URL 验证:
r'https?://\w+\.\w+'
匹配类似"http://example.com"
或"https://example.com"
的 URL。