Python 正则表达式

正则在线实用工具:regex101

正则表达式(regular expression)是一种用于匹配字符串中字符组合模式的工具。它可以用来检查一个字符串是否匹配某个模式、提取字符串中的信息、替换字符串中的某些部分等。

Python 的 re 模块提供了对正则表达式的支持,允许你执行复杂的字符串搜索、替换、匹配和分割操作。

正则表达式匹配

  • re.match() :如果正则表达式与字符串的开始部分匹配,则返回一个匹配对象;否则返回 None

    python 复制代码
    import re
    if re.match(r'^\d+', '123abc'):
        print("Match found")
  • re.search():扫描整个字符串,返回第一个成功的匹配。

    python 复制代码
    match = re.search(r'\d+', 'abc123def')
    if match:
        print("Match found at position:", match.start(), match.end())
  • re.fullmatch() :如果整个字符串匹配正则表达式,则返回一个匹配对象;否则返回 None

    python 复制代码
    if re.fullmatch(r'\d+', '123'):
        print("Full match")

正则表达式查找

  • re.findall():返回一个列表,包含字符串中所有匹配正则表达式的子串。

    python 复制代码
    numbers = re.findall(r'\d+', 'abc123def456')
    print(numbers)
  • re.finditer() :返回一个迭代器,产生每个匹配的 Match 对象。

    python 复制代码
    for match in re.finditer(r'\d+', 'abc123def456'):
        print("Match found at position:", match.start(), match.end())

正则表达式替换

  • re.sub():替换字符串中所有匹配正则表达式的部分。

    python 复制代码
    new_string = re.sub(r'\d+', 'XXX', 'abc123def456')
    print(new_string)
  • re.subn() :与 re.sub() 类似,但返回一个元组,包含替换后的字符串和替换次数。

    python 复制代码
    new_string, count = re.subn(r'\d+', 'XXX', 'abc123def456')
    print("Replacements made:", count)

正则表达式分割

  • re.split() :按照匹配正则表达式的部分分割字符串。

    python 复制代码
    parts = re.split(r'\d+', 'abc123def456')
    print(parts)

编译正则表达式

  • re.compile() :编译一个正则表达式模式,返回一个 Pattern 对象。

    python 复制代码
    pattern = re.compile(r'\d+')
    match = pattern.search('abc123def')
    if match:
        print("Match found at position:", match.start(), match.end())

正则表达式转义

  • re.escape() :转义所有可能被解释为正则表达式操作符的字符。

    python 复制代码
    escaped_string = re.escape('$1,000')
    print(escaped_string)

正则表达式模式

  • re.purge():清除正则表达式的缓存(主要供调试使用)。

正则表达式断言

  • re.assert() :用于确保一个正则表达式在指定的字符串中匹配,否则抛出 AssertionError
特殊序列 含义
. 匹配任意单个字符(除了换行符)
\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 次
() 捕获组,用于创建一个组,可以提取匹配的部分
\1, \2, ... 引用分组中的匹配,\1 引用第一组的匹配
` `
(?:...) 非捕获组,用于分组但不捕获匹配的文本
(?=...) lookahead 正向前瞻断言,匹配后面跟着特定模式的字符串
(?!...) negative lookahead 负向前瞻断言,匹配后面不跟着特定模式的字符串
(?<=...) lookbehind 正向后瞻断言,匹配前面是特定模式的字符串
(?<!...) negative lookbehind 负向后瞻断言,匹配前面不是特定模式的字符串
\ 用于转义特殊字符,使其失去特殊含义,例如 \. 匹配点字符 .
\p{L} 匹配任何Unicode字母
\P{L} 匹配任何非Unicode字母
相关推荐
Yeats_Liao8 分钟前
Go Web 编程快速入门 01 - 环境准备与第一个 Web 应用
开发语言·前端·golang
卓码软件测评8 分钟前
第三方CMA软件测试机构:页面JavaScript动态渲染生成内容对网站SEO的影响
开发语言·前端·javascript·ecmascript
*才华有限公司*13 分钟前
《爬虫进阶之路:从模拟浏览器到破解动态加载的实战指南》
开发语言·python
深蓝电商API13 分钟前
爬虫+Redis:如何实现分布式去重与任务队列?
redis·分布式·爬虫·python
我是华为OD~HR~栗栗呀25 分钟前
华为OD-23届考研-测试面经
java·c++·python·华为od·华为·面试·单元测试
gc_229930 分钟前
学习Python中Selenium模块的基本用法(20:安装Selenium IDE)
python·selenium
敲代码的嘎仔33 分钟前
JavaWeb零基础学习Day4——Maven
java·开发语言·学习·算法·maven·javaweb·学习方法
W.Buffer39 分钟前
设计模式-工厂模式:解耦对象创建的设计艺术
java·开发语言·设计模式
程序员爱钓鱼1 小时前
Python编程实战 · 基础入门篇 | 数据类型简介:数字、字符串、布尔值
后端·python
梵得儿SHI1 小时前
Java 注解与反射实战:自定义注解从入门到精通
java·开发语言·注解·自定义注解·元注解·控制注解的作用·声明式编程思想