Python re 正则表达式 数据匹配提取 基本使用

简介: 模式字符串使用特殊的语法来表示一个正则表达式:字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。多数字母和数字前加一个反斜杠时会拥有不同的含义。标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。反斜杠本身需要使用反斜杠转义。正则表达式通常都包含反斜杠"\\"以及小括号"\(\)",模式元素(如 r'\t',等价于 '\\t')匹配相应的特殊字符。

Python re 正则表达式 数据匹配提取 基本使用

小洲提示:代码可直接复制在编译器中运行,方便更好的理解

文章目录

前言

一、导入库,内置模块无需安装

二、语法介绍

三、常用的方法

3.1 re.compile()

3.2 re.match()

3.3 re.search()

3.4 re.findall()

3.5 re.sub()

四、在线正则表达式测试

总结

前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、导入库,内置模块无需安装

import re

二、语法介绍

模式字符串使用特殊的语法来表示一个正则表达式:
字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。
多数字母和数字前加一个反斜杠时会拥有不同的含义。
标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。
反斜杠本身需要使用反斜杠转义。
正则表达式通常都包含反斜杠"\\"以及小括号"\(\)",模式元素(如 r'\t',等价于 '\\t')匹配相应的特殊字符。
表达式 描述
^ 匹配字符串的开头
$ 匹配字符串的末尾
[...] 用来表示一组字符,单独列出:[abc] 匹配 'a','b','c'
1 取反,匹配不在[]中的字符:2 匹配除了a,b,c,d之外的字符
. 匹配任意字符,除了换行符,可通过flag参数设置匹配任意字符
* 匹配0次或多次
+ 匹配1次或多次,贪婪
? 匹配0次或1次,非贪婪
a I b 匹配a或b
{ n} 匹配n次
{ n, m} 匹配n-m次
(表达式) 对正则表达式分组并记住匹配的文本,常用
[0-9] 匹配任何数字
\d 匹配任意数字,等价于 [0-9]
[a-z] 匹配任何小写字母
[A-Z] 匹配任何大写字母
[a-zA-Z0-9] 匹配任何字母及数字
\w 匹配字母数字及下划线
\W 匹配非字母数字及下划线
\s 匹配任意空白字符,等价于 [ \t\n\r\f]。
\S 匹配任意非空字符
\D 匹配任意非数字
re.S flags参数,使 “.” 特殊字符完全匹配任何字符
re.L flags参数,匹配忽略字母大小写

三、常用的方法

3.1 re.compile()

re.compile()  # 预编译, 编译后生成Regular Expression对象,由于该对象自己包含了正则表达式,所以调用对应的方法时不用给出正则字符串。
match object对象有以下方法:
group() 返回被 RE 匹配的字符串
start() 返回匹配开始的位置
end() 返回匹配结束的位置
span()返回一个元组包含匹配 (开始,结束) 的位置
re_obj = re.compile('[0-9]+')  
result = re_obj.search(string='asda123fs1231')  # 匹配数字,匹配第一次查找到的内容,返回match object对象
print(result.group())  # 123  # 123

3.2 re.match()

re.match()  # 从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,否则返回None。
参数如下:
pattern: 正则规则
string : 要匹配的字符串
falgs : 匹配模式(这个是可选的,可写,可不写),re.S,re.L 
match() 方法一旦匹配成功,就是一个match object对象
import re
str_text = "Python is a good language"  # 要匹配的内容, 对应match 里面的string
result = re.match(pattern="Python.{10,15}", string=str_text, flags=re.S)  # 使 "." 特殊字符完全匹配任何字符
print(result.group())  # 输出结果:Python is a good lang

3.3 re.search()

re.search()  # 会在整个字符串内查找匹配,只要找到第一个匹配则返回一个match object对象,否则返回None。
str_text = "Python is a good language I am xiaozhou1 ! I am xiaozhou2 !"
result = re.search(pattern='I.*?!', string=str_text, flags=re.S)  # 非贪婪
print(result.group())  # I am xiaozhou1 !
result = re.search(pattern='I.+!', string=str_text, flags=re.S)  # 贪婪
print(result.group())  # I am xiaozhou1 ! I am xiaozhou2 !

3.4 re.findall()

re.findall()  # 会在整个字符串内查找匹配,返回所有匹配的结果,list类型,否则返回[]
str_text = "Python is a good language I am xiaozhou1 ! I am xiaozhou2 ! I am xiaozhou3 ! I am xiaozhou4 !"
result = re.findall(pattern='I.*?!', string=str_text, flags=re.S)
print(result)  # ['I am xiaozhou1 !', 'I am xiaozhou2 !', 'I am xiaozhou3 !', 'I am xiaozhou4 !']

3.5 re.sub()

re.sub()  # 会在整个字符串内查找匹配,将匹配的内容替换为设置(repl)的内容
参数如下:
pattern : 正则中的模式字符串。
repl : 替换的字符串,也可为一个函数。
string : 要被查找替换的原始字符串。
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
falgs : 匹配模式(这个是可选的,可写,可不写),re.S,re.L 
str_text = 'I am xiaozhou 我是小洲'
result = re.sub(pattern='[\u4e00-\u9fa5]', repl='', string=str_text, count=0, flags=re.S)  # [^\u4e00-\u9fa5] 替换所有非中文,^取反
print(result)  # I am xiaozhou 

四、在线正则表达式测试

在线正则表达式测试: https://tool.oschina.net/regex/#

总结

小洲提示:代码可直接复制在编译器中运行,方便更好的理解

例如:以上就是今天要讲的内容,本文仅仅简单介绍了re的使用,而re提供了大量能使我们快速便捷地处理数据的函数和方法,后续有关于re的常用代码会在这篇博客中持续更新。
转 python内置正则表达式(re)模块官方文档简要中文版:https://www.cnblogs.com/rosesmall/archive/2012/12/26/2833681.html


  1. ...
  2. abcd
目录
相关文章
|
2月前
|
API 数据库 Python
除了正则表达式,还有哪些方法可以验证用户输入数据的格式?
除了正则表达式,还有哪些方法可以验证用户输入数据的格式?
127 79
|
26天前
|
数据采集 JSON 测试技术
如何在Python中高效实现CSV到JSON的数据转换
在实际项目中,数据格式转换是常见问题,尤其从CSV到JSON的转换。本文深入探讨了多种转换方法,涵盖Python基础实现、数据预处理、错误处理、性能优化及调试验证技巧。通过分块处理、并行处理等手段提升大文件转换效率,并介绍如何封装为命令行工具或Web API,实现自动化批量处理。关键点包括基础实现、数据清洗、异常捕获、性能优化和单元测试,确保转换流程稳定高效。
150 83
|
3月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
446 10
|
15天前
|
JSON API 数据格式
Python 请求微店商品详情数据 API 接口
微店开放平台允许开发者通过API获取商品详情数据。使用Python请求微店商品详情API的主要步骤包括:1. 注册并申请API权限,获得app_key和app_secret;2. 确定API接口地址与请求参数,如商品ID;3. 生成签名确保请求安全合法;4. 使用requests库发送HTTP请求获取数据;5. 处理返回的JSON格式响应数据。开发时需严格遵循微店API文档要求。
|
11天前
|
数据采集 XML 存储
Python爬虫实战:一键采集电商数据,掌握市场动态!
这个爬虫还挺实用,不光能爬电商数据,改改解析规则,啥数据都能爬。写爬虫最重要的是要有耐心,遇到问题别着急,慢慢调试就成。代码写好了,运行起来那叫一个爽,分分钟几千条数据到手。
|
1月前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
|
13天前
|
JSON 监控 API
python语言采集淘宝商品详情数据,json数据示例返回
通过淘宝开放平台的API接口,开发者可以轻松获取商品详情数据,并利用这些数据进行商品分析、价格监控、库存管理等操作。本文提供的示例代码和JSON数据解析方法,可以帮助您快速上手淘宝商品数据的采集与处理。
|
1月前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
51 12
|
19天前
|
数据采集 供应链 API
实战指南:通过1688开放平台API获取商品详情数据(附Python代码及避坑指南)
1688作为国内最大的B2B供应链平台,其API为企业提供合法合规的JSON数据源,直接获取批发价、SKU库存等核心数据。相比爬虫方案,官方API避免了反爬严格、数据缺失和法律风险等问题。企业接入1688商品API需完成资质认证、创建应用、签名机制解析及调用接口四步。应用场景包括智能采购系统、供应商评估模型和跨境选品分析。提供高频问题解决方案及安全合规实践,确保数据安全与合法使用。立即访问1688开放平台,解锁B2B数据宝藏!
|
26天前
|
数据采集 存储 前端开发
用Python抓取亚马逊动态加载数据,一文读懂
用Python抓取亚马逊动态加载数据,一文读懂

热门文章

最新文章