python3 re正则入门

Python 中的 re 模块是处理正则表达式的标准库,可以用来匹配字符串模式、提取子字符串、替换文本等。以下是 re 模块的基本用法和常见正则表达式模式入门。


1. 导入模块

在使用正则表达式之前,需要导入 re 模块:

import re

2. 常用函数

1)re.match

从字符串的开头尝试匹配一个模式。

result = re.match(r"hello", "hello world")
if result:
    print("匹配成功")
else:
    print("匹配失败")
2)re.search

在整个字符串中搜索第一次匹配的模式。

result = re.search(r"world", "hello world")
if result:
    print("匹配成功")
3)re.findall

找到字符串中所有与模式匹配的子字符串,返回列表。

result = re.findall(r"\d+", "我有123个苹果和456个橙子")
print(result)  # 输出:['123', '456']
4)re.sub

替换字符串中与模式匹配的部分。

result = re.sub(r"\d+", "数字", "我有123个苹果和456个橙子")
print(result)  # 输出:我有数字个苹果和数字个橙子
5)re.split

按照匹配的模式拆分字符串。

result = re.split(r"\s+", "hello   world python")
print(result)  # 输出:['hello', 'world', 'python']

3. 常见正则表达式符号

符号描述示例
.匹配任意单个字符(除换行符)r"h.t" 匹配 hat, hot
\d匹配数字(0-9)r"\d+" 匹配 123
\D匹配非数字r"\D+" 匹配 abc
\w匹配字母、数字或下划线r"\w+" 匹配 word123
\W匹配非字母、数字、下划线r"\W+" 匹配 #$@
\s匹配空白字符(空格、制表符、换行符等)r"\s+" 匹配空格
\S匹配非空白字符r"\S+" 匹配 word
^匹配字符串开头r"^hello" 匹配 hello
$匹配字符串结尾r"world$" 匹配 world
*匹配前一个字符 0 次或多次r"a*" 匹配 aaa 或空
+匹配前一个字符 1 次或多次r"a+" 匹配 aaa
?匹配前一个字符 0 次或 1 次r"a?" 匹配 a 或空
{n}匹配前一个字符正好 n 次r"a{3}" 匹配 aaa
{n,m}匹配前一个字符 n 至 m 次r"a{1,3}" 匹配 a, aa
[]匹配字符集中的任意一个字符r"[aeiou]" 匹配元音字母
``或,匹配左或右模式
()分组,提取匹配内容r"(ab)+c" 匹配 abababc

4. 示例用法

提取邮箱
text = "我的邮箱是 test@example.com,请联系我!"
match = re.search(r"\w+@\w+\.\w+", text)
if match:
    print(f"邮箱地址:{match.group()}")
替换手机号中间部分为 *
text = "我的手机号是 13812345678,请保密!"
result = re.sub(r"(\d{3})\d{4}(\d{4})", r"\1****\2", text)
print(result)  # 输出:我的手机号是 138****5678,请保密!
验证日期格式
date = "2024-12-11"
if re.match(r"\d{4}-\d{2}-\d{2}$", date):
    print("日期格式正确")
else:
    print("日期格式错误")

在这里插入图片描述

5. 提高技巧

  1. 熟悉正则语法:建议在 Regex101 等工具中尝试和调试正则表达式。
  2. 使用 re 模块中的 re.VERBOSE:可以通过注释让复杂的正则表达式更易读。
    pattern = re.compile(r"""
        \d{4}   # 年份
        -       # 横杠
        \d{2}   # 月份
        -       # 横杠
        \d{2}   # 日期
    """, re.VERBOSE)
    

开始练习从简单的模式匹配,逐步理解正则表达式的强大功能!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

少陽君

谢谢老板的拿铁

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

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

打赏作者

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

抵扣说明:

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

余额充值