【python】正则表达式匹配数据

2023-10-31


前言

使用正则表达式处理数据,可进行字符串匹配、提取和替换等操作。在python中,通过re库完成正则匹配的操作。


一、正则语法规则

1.常用匹配符

模式 描述
^ 匹配字符串开头
$ 匹配字符串结尾
. 匹配任意字符
* 匹配前面的字符零次或多次
+ 匹配前面的字符一次或多次
? 匹配前面的字符零次或一次
[] 匹配括号中列举的任意一个字符
[^] 匹配除了括号中列举的字符以外的任意一个字符

2.常用匹配函数

函数 描述
re.match 从开始位置开始匹配,如果开头没有则无,语法: re.match(pattern, string)
re.search 搜索整个字符语法: re.search(pattern, string)
re.findall 搜索整个字符串,返回一个list 语法: re.findall (pattern, string)

3.常用修饰符

修饰符 描述
re.I 使匹配对大小写不敏感
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.L 做本地化识别(locale-aware)匹配
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解

二、正则表达式的应用

1.引入库

代码如下(示例):

import re

2.提取数据

代码如下(示例):

import  re
content = '''
<div>
<a href="https://baike.baidu.com/item/%E5%B9%BF%E4%B8%9C%E7%9C%81/132473" title="广东省">广东省介绍</a>
<a href="https://baike.baidu.com/item/%E6%B1%9F%E8%A5%BF%E7%9C%81/19438118" title="江西省">江西省介绍</a>
</div>
'''
# 获取链接文本内容
part = r'<a.*?>(.*?)</a>'
topic = re.findall(part,content)
print(topic )
# 获取完整链接内容
url_part = r'<a.*?href=.*?</a>'
urls = re.findall(url_part,content,re.I|re.S|re.M)
for i in urls:
    print(i)

# 获取单个链接
res_url = r'href="(.*?)"'
url = re.findall(res_url,content,re.I|re.S|re.M)
print(url)
for i in url:
    print(i)

3.返回结果

['广东省介绍', '江西省介绍']
<a href="https://baike.baidu.com/item/%E5%B9%BF%E4%B8%9C%E7%9C%81/132473" title="广东省">广东省介绍</a>
<a href="https://baike.baidu.com/item/%E6%B1%9F%E8%A5%BF%E7%9C%81/19438118" title="江西省">江西省介绍</a>
['https://baike.baidu.com/item/%E5%B9%BF%E4%B8%9C%E7%9C%81/132473', 'https://baike.baidu.com/item/%E6%B1%9F%E8%A5%BF%E7%9C%81/19438118']
https://baike.baidu.com/item/%E5%B9%BF%E4%B8%9C%E7%9C%81/132473
https://baike.baidu.com/item/%E6%B1%9F%E8%A5%BF%E7%9C%81/19438118

在这里插入图片描述


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【python】正则表达式匹配数据 的相关文章

  • Django:模拟模型上的字段

    如何将模拟对象分配给该模型上的用户字段 无论如何都要绕过 SomeModel user 必须是 User 实例 检查吗 class SomeModel models Model user models ForeignKey User 我不会
  • Python setuptools:如何在 setup.py 中添加私有存储库 (gitlab)?

    我上传了 2 个包 它们位于我的 gitlab 存储库中 如果我想使用 pip 将它们安装在我的系统中 这很容易 因为 gitlab 可以帮助您 https docs gitlab com ee user packages pypi rep
  • xlrd.biffh.XLRDError:Excel xlsx 文件;不支持[重复]

    这个问题在这里已经有答案了 我正在尝试使用读取启用宏的 Excel 工作表pandas read excel与 xlrd 库 它在本地运行良好 但是当我尝试将其推送到 PCF 时 我收到此错误 2020 12 11T21 09 53 441
  • Python有条件求解时滞微分方程

    我在用dde23 of pydelay包来求解延迟微分方程 我的问题 如何有条件地编写方程 例如目标方程有两个选项 when x gt 1 dx dt 0 25 x t tau 1 0 pow x t tau 10 0 0 1 x othe
  • for 循环如何评估其参数

    我的问题很简单 Does a for循环评估它每次使用的参数 Such as for i in range 300 python 是否会为此循环的每次迭代创建一个包含 300 个项目的列表 如果是的话 这是避免这种情况的方法吗 lst ra
  • 可以用 Django 制作移动应用程序吗?

    我想知道我是否可以在我的网站上使用 Django 代码 并以某种方式在移动应用程序 Flutter 等框架中使用它 那么是否可以使用我现在拥有的 Django 后端并在移动应用程序中使用它 所以就像models views etc 是的 有
  • python 中的 Johansen 协整检验

    我找不到任何有关在处理统计和时间序列分析 pandas 和 statsmodel 的 Python 模块中执行 Johansen 协整检验的功能的参考 有谁知道是否有一些代码可以执行时间序列之间的协整测试 现在 这已在 Python 的 s
  • Apache Spark 中的高效字符串匹配

    我使用 OCR 工具从屏幕截图中提取文本 每个大约 1 5 句话 然而 当手动验证提取的文本时 我注意到时不时会出现一些错误 鉴于文本 你好 我真的很喜欢 Spark 我注意到 1 像 I 和 l 这样的字母被 替换 2 表情符号未被正确提
  • PySide6.1 与 matplotlib 3.4 不兼容

    当我只安装PySide6时 GUI程序运行良好 但是一旦我安装了matplotlib及其依赖包 包括pyqt5 则GUI程序将无法运行并输出以下错误消息 This application failed to start because no
  • Pandas 滚动窗口 Spearman 相关性

    我想使用滚动窗口计算 DataFrame 两列之间的 Spearman 和 或 Pearson 相关性 我努力了df corr df col1 rolling P corr df col2 P为窗口尺寸 但我似乎无法定义该方法 添加meth
  • django-admin.py makemessages 不起作用

    我正在尝试翻译一个字符串 load i18n trans Well Hello there how are you to Hola amigo que tal 我的 settings py 文件有这样的内容 LOCALE PATHS os
  • Python 惰性迭代器

    我试图了解迭代器表达式如何以及何时被求值 以下似乎是一个懒惰的表达 g i for i in range 1000 if i 3 i 2 然而 这个在构造上失败了 g line strip for line in open xxx r if
  • 如何使用 paramiko 查看(日志)文件传输进度?

    我正在使用 Paramiko 的 SFTPClient 在主机之间传输文件 我希望我的脚本打印文件传输进度 类似于使用 scp 看到的输出 scp my file user host user host password my file 1
  • 使用 numpy 在 python 中执行最大方差旋转

    我正在研究矩阵的主成分分析 我已经找到了如下所示的组件矩阵 A np array 0 73465832 0 24819766 0 32045055 0 3728976 0 58628043 0 63433607 0 72617152 0 5
  • 如何将回溯/sys.exc_info() 值保存在变量中?

    我想将错误名称和回溯详细信息保存到变量中 这是我的尝试 import sys try try print x except Exception ex raise NameError except Exception er print 0 s
  • 如何使用 Keras ImageDataGenerator 预测单个图像?

    我已经训练 CNN 对图像进行 3 类分类 在训练模型时 我使用 keras 的 ImageDataGenerator 类对图像应用预处理功能并重新缩放它 现在我的网络在测试集上训练得非常准确 但我不知道如何在单图像预测上应用预处理功能 如
  • 如何使用 matplotlib 为圆柱体的每个单独面添加颜色

    我正在尝试为圆柱体的每个面着色 但是我不确定如何进行 我尝试了以下方法 for i in range 10 col append for i in range 10 for j in range 20 col i append plt cm
  • 更改 Python Cmd 模块处理自动完成的方式

    我有一个 Cmd 控制台 设置为自动完成 Magic the Gathering 收藏管理系统的卡牌名称 它使用文本参数在数据库中查询卡片 并使用结果自动完成 建议卡片 然而 这些卡片名称有多个单词 Cmd 会从last到行尾的空间 例如
  • Django 模型:如何使用 mixin 类来覆盖 django 模型以实现 save 等功能

    我想在每次保存模型之前验证值 所以 我必须重写保存函数 代码几乎是一样的 我想把它写在 mixin 类中 但失败了 我不知道如何写 super func 我英语不好 抱歉 class SyncableMixin object def sav
  • python sklearn中的fit方法

    我问自己关于 sklearn 中拟合方法的各种问题 问题1 当我这样做时 from sklearn decomposition import TruncatedSVD model TruncatedSVD svd 1 model fit X

随机推荐

  • 8个免费、高清、无版权视频素材下载网站推荐

    现如今 短视频行业可谓是风生水起 越来越多的人加入了视频剪辑 最令人头疼的就是视频素材不知道从哪里来 今天小编就给大家整合了8个免费 高清 无版权视频素材下载网站 让大家视频编辑更快捷更方便 一 Distill Distill是专为设计师提
  • 如何查看自己的电脑硬盘是不是固态硬盘

    前段时间给自己的电脑C盘换了一个固态硬盘 结果今天发现运行比较慢 就特意查了一下是不是固态的 以下是具体方法 需要的可以参考 上图红框里面得到媒体类型 显示固态硬盘它就是固态硬盘 显示其他驱动的就是机械硬盘
  • Android dip(dp) 与 sp的自适应问题

    转自 http www oschina net question 272860 70761 今天碰到的一个问题 感觉应该其他人也会碰到 拿来分享一下 我们都知道android在开发配置界面时一般都会使用dip和sp这种逻辑长度单位来实现屏幕
  • Matlab 中prod函数的使用

    B prod A 将A矩阵不同维的元素的乘积返回到矩阵B Matlab中文论坛 如果A是向量 prod A 返回A向量的乘积 如果A是矩阵 prod A 将A看作列向量 返回每一列元素的乘积并组成一个行向量B 如果A是多维数组 prod A
  • jenkins_获取json

    import jenkins import yaml import json import urllib parse import xmltodict from xml etree import ElementTree def LoginJ
  • ubuntu 16.04 编译与安装 absl 库(cartographer库安装之1-absl)

    set o errexit set o verbose git clone https github com abseil abseil cpp git cd abseil cpp git checkout d902eb869bcfacc1
  • 【CTF】web-文件上传篇1

    upload labs靶场 1 前端js限制 2 修改Content Type 3 htaccess绕过 4 00截断 1 前端js限制 场景 使用 burp 抓包 在点击上传时 直接弹出了提示 这时 burp 并没有抓到数据包 说明是在前
  • 深度学习常用Linux命令

    Linux命令查询手册 https www linuxcool com 目录 一 常用快捷键 二 关于docker的使用 1 进入docker 2 设置使用某块dcu代码 3 docker与主机之间的文件传输 三 关于文件和文件夹 1 文件
  • ADS错误之the session file 'C:\user\username\default-1-2-0-0.ses' could not be loaded

    刚在编arm程序的时候遇到了这个错误 去网上搜了下资料 查到关于这个错误信息的解决方法 如下 如果出现错误信息 the session file C user username default 1 2 0 0 ses could not b
  • 105-----JS基础-----添加删除记录-修改

    一 代码 本节的代码是对104节的内容进行优化 因为按照上一节的内容这样写的话 会创建过多的资源 造成资源浪费 导致用户体验不好 当界面复杂起来 可能会变得很卡 造成用户体验不好 所以需要进行优化 下面的例子 避免了人为的创建多个节点元素
  • 总结一下刷过的题

    今年刷题还是挺爽的 1 Two Sum 用map建立number gt index映射即可 2 Add Two Numbers 利用链表的基本操作来模拟高精度相加过程 链表头为最低位 3 Longest Substring Without
  • Python人脸识别项目-人脸检测

    人脸检测 接下来我们先拿一个简单的人脸检测项目练练手 我们的目标是实现通过摄像头实时检测人脸 这里我们要用到一个分类器这个分类器可以从github上下载也可以从我们的Python第三包里直接用 在cv2包的data文件夹里面 coding
  • C#基础(条件运算符)

    作用 格式 用于比较两个变量或常量 条件运算符 一定存在左右两边的内容 左边内容 条件运算符 右边内容 分类 是否大于 gt 是否小于 lt 是否等于 是否不等于 是否大于等于 gt 是否小于等于 lt 比较的结果 返回的是 一个 bool
  • Deep Learning for Massive MIMO CSI Feedback

    这篇文章是自己之前学习论文的一点心得 是源于AI 无线通信这个比赛 论文百度搜这个 去IEEE官网就可以下载了 C Wen W Shih and S Jin Deep Learning for Massive MIMO CSI Feedba
  • 计算2支股票的M天运动平均价格时间

    计算2支股票的M天运动平均价格时间 题目描述 给定2支股票的开盘价和收盘价的N天历史数据 要求按开盘和收盘 分别计算每支股票的每个日期对应的M天移动平均价格 假定两个股票数据如下 日期 开盘 收盘 第1支股票价格S1 第2支股票价格S2 2
  • 移动端按设计图比例布局

    利用选择器设置全局字体大小 root font size 50px 根据设计图大小转换字体大小 相对于视图750为例 1rem 100px root font size calc 100vw 7 5
  • 北京大学肖臻老师《区块链技术与应用》公开课笔记16——ETH账户篇

    北京大学肖臻老师 区块链技术与应用 公开课笔记 以太坊账户篇 对应肖老师视频 click here 全系列笔记请见 click here About Me 点击进入我的Personal Page BTC系统是基于交易的账本 系统中并未显示记
  • 【密码算法 之八】Hash类算法(单向散列函数) MD5 \ SHA1 \ SHA224 \ SHA256 \ SHA384 \ SHA512等浅析

    1 综述 Hash算法 又称单向散列函数 one way hash function 单向散列函数有一个输入和一个输出 其中输入称为消息 message 输出称为散列值 hash value 单向散列函数可以根据消息的内容计算出散列值 而散
  • 1025 反转链表python3无超时

    终于在卡了好几天之后想到了解决办法 这道题给出的代码并不能保证完全成功 不超时的概率大概在50 文章目录 一 最初的代码 二 代码改进 一 最初的代码 这个问题一般解决思路如下 获得正序链表 根据条件反转链表 输出链表 代码如下 usr b
  • 【python】正则表达式匹配数据

    前言 使用正则表达式处理数据 可进行字符串匹配 提取和替换等操作 在python中 通过re库完成正则匹配的操作 一 正则语法规则 1 常用匹配符 模式 描述 匹配字符串开头 匹配字符串结尾 匹配任意字符 匹配前面的字符零次或多次 匹配前面