正则表达式匹配入门

什么是正则表达式?

正则表达式(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。

结论


正则表达式是一个非常强大的工具,可以帮助你在处理文本数据时更加高效和灵活。通过掌握基础语法和常见用法,可以轻松地解决许多复杂的文本处理问题。希望这篇博客能帮助你更好地理解和使用正则表达式!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

happydog007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值