正则表达式是一种强大的文本模式匹配和搜索工具,它使用一种特殊的语法来描述字符串的模式。Python 中的正则表达式由 re
模块提供支持,让你可以在字符串中执行复杂的模式匹配和搜索操作。
以下是一些常用的正则表达式语法和功能:
1. 匹配单个字符:
-
.
: 匹配任意字符(除了换行符)。 -
\d
: 匹配任意数字。 -
\D
: 匹配任意非数字字符。 -
\w
: 匹配任意字母、数字或下划线。 -
\W
: 匹配任意非字母、数字或下划线字符。 -
\s
: 匹配任意空白字符。 -
\S
: 匹配任意非空白字符。
2. 匹配重复字符:
-
*
: 匹配前一个字符的零次或多次。 -
+
: 匹配前一个字符的一次或多次。 -
?
: 匹配前一个字符的零次或一次。 -
{n}
: 匹配前一个字符恰好 n 次。 -
{n,}
: 匹配前一个字符至少 n 次。 -
{n,m}
: 匹配前一个字符至少 n 次,但不超过 m 次。
3. 匹配位置:
-
^
: 匹配字符串的开头。 -
$
: 匹配字符串的结尾。 -
\b
: 匹配单词的边界。 -
\B
: 匹配非单词的边界。
4. 匹配字符集合:
-
[]
: 匹配字符集中的任意一个字符。 -
[^]
: 否定字符集,匹配不在字符集中的任意一个字符。 -
[a-z]
: 匹配指定范围内的字符。 -
[a-zA-Z0-9]
: 匹配多个字符范围。
5. 其他常用语法:
-
|
: 或操作,匹配两个表达式中的任意一个。 -
()
: 分组操作,将表达式分组,以便对其进行后续操作。 -
\
: 转义字符,用于匹配特殊字符。 -
re.IGNORECASE
或re.I
: 忽略大小写匹配。 -
re.MULTILINE
或re.M
: 多行匹配。
示例:
-
匹配邮件地址:
r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
-
匹配 URL:
r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
-
匹配日期:
r'\b\d{4}-\d{2}-\d{2}\b'
总之,正则表达式是一种强大的工具,但也很复杂。在实践中,可能需要不断地尝试和调整表达式,以匹配特定的模式。