Python中re模块的使用

正则表达式是一种强大的工具,用于处理字符串的匹配、搜索和替换操作。在Python中,我们可以使用内置的re模块来执行各种正则表达式操作。

1 基本用法

  • re.match(pattern, string): 从字符串的开头匹配一个模式。返回match对象或None。
  • re.search(pattern, string): 在整个字符串中搜索一个模式。返回match对象或None。
  • re.fullmatch(pattern, string):匹配整个字符串。返回match对象或None。
  • re.findall(pattern, string): 查找所有匹配的子字符串。返回列表。
  • re.sub(pattern, replacement, string): 替换匹配的子字符串。
  • re.subn(pattern, replacement, string):替换匹配的子字符串,返回一个元组(新字符串,替换个数)。
  • re.split(pattern, string): 切割,返回列表。

2 正则表达式语法

. : 匹配任意字符,除了换行符。
*: 匹配前一个字符0次或多次。
+: 匹配前一个字符1次或多次。
?: 匹配前一个字符0次或1次。
[]: 匹配括号内的任意字符。
|: 匹配两个模式之一。
^: 匹配字符串的开头。
$: 匹配字符串的结尾。

3 示例

导入 re 模块

import re

3.1 匹配邮箱地址

pattern = r'\w+@\w+\.\w+'
email = 'john.doe@example.com'
if re.match(pattern, email):
    print(f"{email} 是有效的邮箱地址")
else:
    print(f"{email} 不是有效的邮箱地址")

3.2 查找所有数字

text = "Today is 2024-02-28."
numbers = re.findall(r'\d+', text)
print("找到的数字:", numbers)

4 扩展

4.1 字符串匹配

  • \d: 匹配前一个数字。
  • \D:匹配前一个非数字。
  • \w:匹配前一个数字或字母或下划线。
  • \W:匹配前一个非数字、字母、下划线。
  • \s:匹配前一个空白字符(换行符、制表符、空格)。
  • \S:匹配前一个非空白字符。
  • \b:匹配单词边界。
  • \B:匹配非单词边界
  • re.I:不区分大小写。
  • re.M:多行模式,如果有换行符。

4.2 分组

分组

():代表一个分组
在findall中使用可以只返回分组中的内容

代表分组

\n: 按顺序代表前面的分组相同的内容,\2 就代表前面的第二个分组。

示例

import re
s = "hihi"
r = re.match(r'(hi)\1', s)
print(r.group)

解释: s 代表 两个hi组成的字符串,而分组(hi)就代表hi,而\1就代表分组(hi),因此可以匹配成功。

4.3 特殊字符

  • [abc] :匹配abc中的一个。
  • [^abc] :匹配非abc中的一个。
  • [a-zA-Z0-9_] :匹配数字、字母、下划线,代表\w。
  • {n}: 匹配前面的字符n次。
  • {m, n}:匹配前面的字符m或n次。

5 .*?

没了解过这个符号的人可能不知道这个是什么意识,这个符号是一个神器
它可以匹配任何字符。
其实还有一个符号 .,它同样可以匹配任何字符,但它是尽可能多的匹配,而 **.?**是尽可能少的匹配。

在这里插入图片描述
本文到此结束,如果觉得可以的话,可以点个关注哦🌹🌹🌹

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值