Python正则表达式

devtools/2024/9/22 17:05:12/

Python中的正则表达式是通过内置的`re`模块来支持的。正则表达式是一种用于字符串搜索和操作的强大工具,它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

以下是Python中使用正则表达式的基本方法:

### 1. 导入模块

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

import re

### 2. 正则表达式操作

#### 2.1 匹配操作

- `re.match()`:从字符串的开始位置匹配一个模式,如果匹配成功,返回一个匹配对象;否则返回`None`。

match = re.match(r'^\d+', '123abc')
if match:print(match.group())  # 输出匹配的字符串 '123'

- `re.search()`:在字符串中搜索一个模式,如果在字符串中找到匹配的模式,返回一个匹配对象;否则返回`None`。

search = re.search(r'\d+', 'abc123')
if search:print(search.group())  # 输出匹配的字符串 '123'

#### 2.2 匹配组

正则表达式中的括号`()`用于分组,并从匹配的文本中提取出一部分。

```python
pattern = r'(\d+)-(\d+)'
match = re.match(pattern, '2023-04-29')
if match:
    print(match.group(1))  # 输出 '2023'
    print(match.group(2))  # 输出 '04-29'
```

#### 2.3 替换操作

- `re.sub()`:替换字符串中的一些匹配项。

result = re.sub(r'\bfoo\b', 'bar', 'foo bar foo')
print(result)  # 输出 'bar bar foo'

#### 2.4 分割操作

- `re.split()`:使用正则表达式来分割字符串。

result = re.split(r'\s+', 'One two    three')
print(result)  # 输出 ['One', 'two', 'three']

#### 2.5 编译正则表达式

- `re.compile()`:将正则表达式编译成模式对象,可以提高匹配效率。

pattern = re.compile(r'\d+')
match = pattern.match('123abc')
if match:print(match.group())  # 输出 '123'

### 3. 正则表达式元字符

- `.`:匹配除换行符之外的任何单个字符。
- `^`:匹配字符串的开始。
- `$`:匹配字符串的结束。
- `*`:匹配前面的字符零次或多次。
- `+`:匹配前面的字符一次或多次。
- `?`:匹配前面的字符零次或一次。
- `{m, n}`:匹配前面的字符至少m次,但不超过n次。
- `[]`:字符集,匹配括号内的任意一个字符。
- `|`:逻辑或,匹配左边或右边的模式。
- `\`:转义字符,用于匹配特殊字符或原义字符。

### 4. 正则表达式函数

- `re.findall()`:返回所有匹配的字符串列表。
- `re.finditer()`:返回一个迭代器,每次迭代返回一个匹配对象。
- `re.group()`:返回各个分组的匹配文本。

正则表达式是一个非常强大的工具,但同时也可能变得相当复杂。在使用时,应该注意编写清晰、易于理解的正则表达式,并充分利用Python的`re`模块提供的函数和方法。


http://www.ppmy.cn/devtools/23838.html

相关文章

pytest 的 request fixture:实现个性化测试需求

在之前深入理解pytest-repeat插件的工作原理一文中,我们看到pytest_repeat源码中有这样一段 pytest.fixture def __pytest_repeat_step_number(request): marker request.node.get_closest_marker("repeat") count marker and marker.args[0] …

「Kafka」Kafka基础知识入门介绍(三)

「Kafka」Kafka基础知识入门介绍(三) 一、消息主题1. 创建主题 二、生产数据1. 命令行模式2. Java代码模式 三、消费数据1. 命令行模式2. Java代码模式 「Kafka」Kafka理论知识解读(一) 「Kafka」Kafka安装和启动(二&a…

数据分析-numpy

数据分析 numpy Numpy 是一个开源的 Python 科学计算库,用于快速处理任意维度的数组。Numpy 支持常见的数组和矩阵操作,对于同样的数值计算任务,使用 NumPy 不仅代码要简洁的多,而且 NumPy 在性能上也远远优于原生 Python&#…

springcloud Ribbon的详解

1、Ribbon是什么 Ribbon是Netflix发布的开源项目,Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的框架。 2、Ribbon能干什么 LB负载均衡(Load Balance)是什么?简单的说就是将用户的请求平摊的分配到多个服务上,从而达…

Postman的安装与汉化(超级详细!!!)

1、下载安装包 链接:百度网盘 请输入提取码 提取码:ywmk --来自百度网盘超级会员V5的分享 下载后的目录如图所示 2、Postman安装 双击目录下的 Postman-win64-9.10.0-Setup.exe 即可自动安装 3、Postman汉化 找到postman的安装目录,然后…

day84 json中实现简单验证码

项目中的问题: 1 修改JS或CSS后,页面不能及时更新? 把浏览器-->"开发者工具"-->"网络"-->选中"禁用缓存" 2 如何把HTML页面转为JSP页面 将jsp页面中的<% page contentType"text/html;charse…

vue +antvX6 根据节点与线,动态设置节点坐标生成流程图

需求 vue2 antvX6完成流程图&#xff0c;但只有节点与线&#xff0c;没有节点的坐标&#xff0c;需要根据节点的顺序显示流程图。 需求&#xff1a; 1.根据数据动态生成对应的节点与线&#xff1b; 2.节点不能重叠&#xff1b; 3.节点与线可拖拽&#xff1b; 4.因为线存在重…

关于前后端一体项目SpringSecurity框架登陆失效,HTTPS重定向登陆页面异常的问题

现有环境是基于SpringBoot 2.6.8&#xff0c;然后是前后台一体化的项目。 安全框架使用的是内置版本的SpringSecurity。 场景&#xff1a;用户登陆&#xff0c;系统重启导致用户的session失效。但前端并没有跳转到对应的登录页&#xff0c;在HTTP的环境下可以正常跳转&#x…