Python 正则表达式(通过 re 模块实现)是处理字符串的强大工具。下面介绍最常用的核心功能,包括常用函数、元字符和特殊序列,配合简单示例。


一、常用的 re 模块函数

这是你最常调用的工具函数:

函数 作用 简单示例
re.search(pattern, string) 在字符串中查找第一个匹配的位置(返回匹配对象,没找到返回 None)。 re.search(r"\d+", "abc123def") → 匹配 123
re.findall(pattern, string) 查找所有匹配的子串,返回一个列表。 re.findall(r"\d+", "1a2b3c")['1', '2', '3']
re.sub(pattern, repl, string) 替换匹配的子串。 re.sub(r"\d+", "*", "1a2b")'*a*b'
re.match(pattern, string) 只从字符串开头进行匹配(用得较少,search 更通用)。 re.match(r"a", "abc") → 匹配 a

二、核心元字符(构建规则的积木)

元字符是正则表达式的灵魂,用来定义匹配规则:

1. 基础匹配
符号 描述 示例
. 匹配任意单个字符(除了换行符 \n)。 a.c → 匹配 abca1ca!c
^ 匹配字符串的开头 ^Hello → 匹配以 Hello 开头的字符串
$ 匹配字符串的结尾 World$ → 匹配以 World 结尾的字符串
2. 重复次数(量词)
符号 描述 示例
* 匹配前一个字符 0 次或多次(贪婪匹配)。 ab* → 匹配 aababbabbb
+ 匹配前一个字符 1 次或多次 ab+ → 匹配 ababb…(不匹配 a
? 匹配前一个字符 0 次或 1 次(可选)。 ab? → 匹配 aab
{n} 匹配前一个字符 恰好 n 次 a{3} → 匹配 aaa
{n,} 匹配前一个字符 至少 n 次 a{2,} → 匹配 aaaaa
{n,m} 匹配前一个字符 n 到 m 次 a{2,4} → 匹配 aaaaaaaaa
3. 字符集合
符号 描述 示例
[abc] 匹配方括号内的任意一个字符 [abc] → 匹配 abc
[a-z] 匹配指定范围内的字符。 [a-z] → 匹配任意小写字母
[^abc] 匹配不在方括号内的字符(取反)。 [^abc] → 匹配除了 a、b、c 之外的字符
4. 分组与逻辑
符号 描述 示例
(...) 将括号内的部分作为一个分组(提取子串时常用)。 (ab)+ → 匹配 ababab
| 逻辑(匹配左边或右边的规则)。 cat|dog → 匹配 catdog

三、常用特殊序列(简写)

这些是预定义的快捷方式,让正则更简洁:

符号 描述 等价于
\d 匹配任意数字 [0-9]
\D 匹配任意非数字 [^0-9]
\w 匹配单词字符(字母、数字、下划线)。 [a-zA-Z0-9_]
\W 匹配非单词字符。 [^a-zA-Z0-9_]
\s 匹配空白字符(空格、制表符、换行符)。 [ \t\n\r\f\v]
\S 匹配非空白字符。 [^ \t\n\r\f\v]

四、实用小例子

  1. 匹配手机号(简单版):

    re.findall(r"1\d{10}", "我的电话是13812345678")
    # 输出: ['13812345678']
    
  2. 提取邮箱

    re.findall(r"\w+@\w+\.\w+", "联系我: test@example.com")
    # 输出: ['test@example.com']
    
  3. 替换敏感词

    re.sub(r"坏蛋", "***", "你是个坏蛋,大坏蛋!")
    # 输出: '你是个***,大***!'
    

小贴士

  • 在 Python 中,正则表达式字符串前通常加 r(如 r"\d+"),表示原始字符串,避免转义字符冲突。
  • 正则很强大但也容易写复杂,建议循序渐进,多用 findall 测试效果。
Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐