正则表达式
-
字符:
- 普通字符:如
a
、b
、1
等,表示自身。 - 特殊字符:如
.
(匹配任意字符)、^
(匹配字符串开头)、$
(匹配字符串结尾)。
- 普通字符:如
-
元字符:
\d
:匹配数字,等价于[0-9]
。\D
:匹配非数字字符。\w
:匹配字母、数字和下划线,等价于[a-zA-Z0-9_]
。\W
:匹配非字母、数字和下划线。\s
:匹配空白字符(空格、制表符、换行符等)。\S
:匹配非空白字符。
-
量词:
*
:匹配前面的字符零次或多次。+
:匹配前面的字符一次或多次。?
:匹配前面的字符零次或一次。{n}
:匹配前面的字符恰好 n 次。{n,}
:匹配前面的字符至少 n 次。{n,m}
:匹配前面的字符至少 n 次,但不超过 m 次。
-
分组和选择:
()
:用于分组,可以提取匹配的子串。|
:表示“或”,例如a|b
匹配a
或b
。
-
转义字符:
- 使用
\
来转义特殊字符,例如\.
匹配字面上的点号.
。
- 使用
常见的正则表达式示例
-
匹配邮箱地址:
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
-
匹配电话号码:
pattern = r'^\(\d{3}\) \d{3}-\d{4}$' # 格式如 (123) 456-7890
-
匹配 URL:
pattern = r'^(https?://)?(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(/.*)?$'
-
匹配日期:
pattern = r'^\d{4}-\d{2}-\d{2}$' # 格式如 2023-01-01
Python 中的正则表达式操作
在 Python 中,使用 re
模块来处理正则表达式。以下是一些常用的函数:
re.match(pattern, string)
:从字符串的开头匹配模式。re.search(pattern, string)
:在字符串中搜索模式。re.findall(pattern, string)
:返回字符串中所有匹配的子串。re.sub(pattern, replacement, string)
:替换字符串中匹配的部分。re.split(pattern, string)
:根据模式分割字符串。re.compile(pattern)
:编译正则表达式,提高性能。
示例代码
以下是一个使用正则表达式的示例,演示如何提取文本中的邮箱地址:
import re
text = "请联系 support@example.com 或 sales@example.org 以获取更多信息。"
pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
emails = re.findall(pattern, text)
print("找到的邮箱地址:", emails) # 输出: ['support@example.com', 'sales@example.org']