什么是正则表达式?
正则表达式(Regular Expression,简称 regex 或 regexp)是一种强大的文本处理工具,用于在字符串中查找、匹配和替换特定模式。它广泛应用于各种编程语言和文本编辑器中,是处理文本数据的强大武器。
基础语法
字符类
.:匹配除换行符以外的任何单个字符。
[abc]:匹配方括号内的任意一个字符。
[^abc]:匹配不在方括号内的任意一个字符。
[a-z]:匹配指定范围内的任意一个字符。
\d:匹配任意一个数字(等同于 [0-9])。
\D:匹配任意一个非数字字符(等同于 [^0-9])。
\w:匹配任意一个字母、数字或下划线(等同于 [a-zA-Z0-9_])。
\W:匹配任意一个非字母、数字或下划线字符(等同于 [^a-zA-Z0-9_])。
\s:匹配任意一个空白字符(包括空格、制表符、换页符等)。
\S:匹配任意一个非空白字符。
量词
*:匹配前面的子表达式零次或多次。
+:匹配前面的子表达式一次或多次。
?:匹配前面的子表达式零次或一次。
{n}:匹配前面的子表达式恰好 n 次。
{n,}:匹配前面的子表达式至少 n 次。
{n,m}:匹配前面的子表达式至少 n 次,但不超过 m 次。
锚点
^:匹配字符串的开始位置。
$:匹配字符串的结束位置。
\b:匹配单词边界。
\B:匹配非单词边界。
分组与引用
( ):定义一个捕获组。
(?: ):定义一个非捕获组。
\1, \2 等:引用前面捕获组的内容。
修饰符
re.IGNORECASE 或 re.I:忽略大小写。
re.MULTILINE 或 re.M:多行模式,^ 和 $ 匹配每一行的开始和结束。
re.DOTALL 或 re.S:使 . 匹配所有字符,包括换行符
实际应用示例
示例 1:验证电子邮件地址
import re
def is_valid_email(email):
pattern = r'^[\w\.-]+@[\w\.-]+\.\w+$'
return re.match(pattern, email) is not None
email = "example@example.com"
print(is_valid_email(email)) # 输出: True
示例 2:提取电话号码
import re
text = "联系电话:123-456-7890,备用电话:098-765-4321"
pattern = r'\d{3}-\d{3}-\d{4}'
phone_numbers = re.findall(pattern, text)
print(phone_numbers) # 输出: ['123-456-7890', '098-765-4321']
示例 3:替换文本中的敏感信息
import re
text = "我的信用卡号是 1234-5678-9012-3456,有效期至 2025/01。"
# 替换信用卡号
credit_card_pattern = r'\b\d{4}-\d{4}-\d{4}-\d{4}\b'
masked_text = re.sub(credit_card_pattern, 'XXXX-XXXX-XXXX-XXXX', text)
# 替换有效期
expiration_pattern = r'\b\d{4}/\d{2}\b'
masked_text = re.sub(expiration_pattern, 'XXXX/XX', masked_text)
print(masked_text) # 输出: 我的信用卡号是 XXXX-XXXX-XXXX-XXXX,有效期至 XXXX/XX。
结论
正则表达式是一个非常强大的工具,可以帮助你在处理文本数据时更加高效和灵活。通过掌握基础语法和常见用法,可以轻松地解决许多复杂的文本处理问题。希望这篇博客能帮助你更好地理解和使用正则表达式!
7573

被折叠的 条评论
为什么被折叠?



