当前位置: 首页 > news >正文

python学习之路(第八天)---re模块正则表达式

python学习之路(第八天)—re模块正则表达式

正则表达式,像代码中的find开头的一些就死正则表达式,作用是筛选我们需要的信息。

image-20210823105911610

用到的是re库,安装过程不再赘述,事实上也可以不用正则表达式,非必须的。这里简单学习一下

在线正则匹配

https://c.runoob.com/front-end/854

可以在线试试编写的正则表达式是否正确

image-20210823140839510

正则匹配语法

image-20210823141143225

re.compile方法

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

语法格式为:re.compile(pattern[, flags])

参考菜鸟教程:https://www.runoob.com/python/python-reg-expressions.html

image-20210823110733685

我们通过代码中的案例来分析一下:

findLink = re.compile(r'<a href="(.*?)">')  
# 创建正则表达式对象,标售规则   影片详情链接的规则

这是筛选影片链接的正则表达

image-20210823114249519

这里链接的标签对应的就是

对应的就是’

这里的 .*?就表示的是这个链接https://movie.douban.com/subject/1292052/,括号是将链接分组

然后作用到爬取的页面中

下面是一个简单的例子:

#使用通用爬虫爬取整个页面
page_all = requests.get(url=url).text#使用正则表达式提取页面
findLink = re.compile(r'<a href="(.*?)">') 

re.match方法

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

函数语法:re.match(pattern, string, flags=0)

image-20210823141328599

匹配成功re.match方法返回一个匹配的对象,否则返回None。

import re
line = "Cats are smarter than dogs"
test = re.match(r'(.*)', line)
if test:print(test.group())
else:print("No match!!")
#结果
Cats are smarter than dogs

re.search方法

re.search 扫描整个字符串并返回第一个成功的匹配。

函数语法:re.search(pattern, string, flags=0)

image-20210823201051054

与match类似,区别在于

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

image-20210823212424842

re.finditer方法

和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

re.finditer(pattern, string, flags=0)

image-20210823212923176

转义匹配

当遇到用于正则匹配模式的特殊字符时,在前面加反斜线转义一下即可。例如.就可以用\ .来匹配

image-20210823144121761

对比

image-20210823144549334

findall()

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

注意: match 和 search 是匹配一次 findall 匹配所有。

语法格式为:

findall(string[, pos[, endpos]])

参数:

  • string : 待匹配的字符串。
  • pos : 可选参数,指定字符串的起始位置,默认为 0。
  • endpos : 可选参数,指定字符串的结束位置,默认为字符串的长度。
import repattern = re.compile(r'\d+')   # 查找数字
result1 = pattern.findall('runoob 123 google 456')
result2 = pattern.findall('run88oob123google456', 0, 10)print(result1)
print(result2)#输出结果
['123', '456']
['88', '12']

还有一些其他方法不多介绍,参考自菜鸟教程可以自行学习下,

传送门

正则表达式的实例

参考菜鸟教程

#!/usr/bin/python
import re
line = "Cats are smarter than dogs"
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
if matchObj:print "matchObj.group() : ", matchObj.group()print "matchObj.group(1) : ", matchObj.group(1)print "matchObj.group(2) : ", matchObj.group(2)
else:print "No match!!"

正则表达式:

r'(.*) are (.*?) .*'

解析:

首先,这是一个字符串,前面的一个 r 表示字符串为非转义的原始字符串,让编译器忽略反斜杠,也就是忽略转义字符。但是这个字符串里没有反斜杠,所以这个 r 可有可无。

  • (.*) 第一个匹配分组,.* 代表匹配除换行符之外的所有字符。
  • (.*?) 第二个匹配分组,.*? 后面多个问号,代表非贪婪模式,也就是说只匹配符合条件的最少字符
  • 后面的一个 .* 没有括号包围,所以不是分组,匹配效果和第一个一样,但是不计入匹配结果中。

matchObj.group() 等同于 matchObj.group(0),表示匹配到的完整文本字符

matchObj.group(1) 得到第一组匹配结果,也就是(.*)匹配到的

matchObj.group(2) 得到第二组匹配结果,也就是(.*?)匹配到的

因为只有匹配结果中只有两组,所以如果填 3 时会报错。


’(?P…)’ 分组匹配

例:身份证 1102231990xxxxxxxx

import re
s = '1102231990xxxxxxxx'
res = re.search('(?P<province>\d{3})(?P<city>\d{3})(?P<born_year>\d{4})',s)
print(res.groupdict())

此分组取出结果为:

{'province': '110', 'city': '223', 'born_year': '1990'}

直接将匹配结果直接转为字典模式,方便使用。
今天就到这里了。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35263.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

移动端开发

移动端应用 H5 移动端页面App小程序 移动端开发方式 原生开发&#xff08;Native App&#xff09;网页开发&#xff08;Web App&#xff09;混合开发&#xff08;Hybrid App&#xff09;跨平台移动端框架 跨 App 平台&#xff1a;React Native、weex、Flutter跨 App、小程序、…...

bootstrap table自定义新增行

.deleattrbtn,.addtrbtn{width: 60px;color: #fff;font-size: 12px;background-color: #3177E7;border-radius: 2px;border: 0; }#addtrdiv,#back_addtrdiv{margin: 10px 22px;text-align: right; }.table-bordered{table-layout: fixed;font-size: 12px; }.table th, .table...

毕设系列 -- 基于STM32的人体红外测温枪温度采集系统

文章目录1 简介2 主要器件3 实现效果4 设计原理MLX90614 红外温度传感器5 部分实现代码6 最后1 简介 Hi&#xff0c;大家好&#xff0c;这里是丹成学长&#xff0c;今天向大家介绍一个学长做的单片机项目 基于STM32的人体红外测温枪温度采集系统 大家可用于 课程设计 或 毕业…...

laravel 8 实现excel 导出

composer 下载 composer require maatwebsite/excel 引入 use Elasticsearch\ClientBuilder; 创建excel文件 php artisan make:Exports FangExports FangExports 里面 return Fang::all(); php后台 //导出房东excelpublic function exports(){return Excel::download(…...

Vue相关:

目录 1,说一下vue最大特点是什么或者说vue核心是什么 2,说一下vue常用基本指令有哪些 3,Vue常用的修饰符...

spring-cloud-kubernetes-feign实战

关于spring-cloud-kubernetes spring-cloud-kubernetes是springcloud官方推出的开源项目&#xff0c;用于将Spring Cloud和Spring Boot应用运行在kubernetes环境&#xff0c;并且提供了通用的接口来调用kubernetes服务&#xff0c;主要提供了应用程序使用k8s本身功能&#xff…...

【Unity】如何将资源包里的Prefabs资源为己所用

步骤一、将所需要的prefab从外部导入的资源拖入Scene中。二、右键该预制体&#xff0c;选择Unpack Prefab Completely取消该预制体及其子物体与资源包中预制体的关联。三、将该预制体拖动到自己的prefabs文件夹目录下&#xff0c;制作成自己项目的预制体。四、在Project面板下&…...

防火墙高可靠性

双机热备、BFD双向转发检测、IP-LINK链路检测、Link-Group逻辑组、ETH-Trunk链路捆绑、Bypass&#xff0c;跨数据中心集群&#xff0c;双主控、业务板备份、数据中心会话同步 双机热备 目的&#xff1a;为了防止单点故障 实现&#xff1a;两台硬件软件相同的FW之间通过一条独…...

手写Promise.all()方法

有1个promise报错了&#xff0c;其他的promis会执行吗&#xff1f; 会的&#xff0c;因为Promsie在实例化时候就已经执行完了。手写Promise.all()方法 function PromiseAll(promiseArray){//返回的一定是个proimsereturn new Promise((resolve,reject)>{//首先判断传入的是…...

Centos8.0系统升级到最新版本

一 &#xff0c;Centos8.0更换国内源&#xff08;阿里源&#xff09; 1&#xff0c; 备份旧的配置文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup2&#xff0c;进入cd /etc/yum.repos.d cd /etc/yum.repos.d3&#xff0c;下载新的 Ce…...

高端音响的死亡被大大夸大了

几年前&#xff0c;在 MP3 盗版时代的鼎盛时期——当高端音频世界哀叹 MP3 文件的糟糕音质&#xff0c;而 MP3 用户乐于用音质换取免费音乐时——一位业内同事问我我以为高端音频已经死了。我向她保证不&#xff0c;一部分音乐迷&#xff0c;虽然可能不是主流&#xff0c;但总是…...

Java学习笔记--13.网络编程

Java学习笔记–13 第十章 网络编程 目录Java学习笔记--13前言网络编程1.定义2.TCP通信(1).ServerSocket(2).Socket3.UDP通信(1).发送方(2).接收方前言 21世纪&#xff0c;走进了信息时代&#xff0c;各种各样的软件层出不穷&#xff0c;但是总离不开程序开发&#xff0c;离不…...

python100例045求1-100之和用sum(range(1,101))

""" 题目045&#xff1a;统计 1 到 100 之和 """ def test045():count 0for i in range(1, 101):count iprint(count)# 二print(sum(range(1, 101))) test045()...

PyScreeze 基本使用(1)

PyScreeze 基本使用&#xff08;1&#xff09; PyScreeze屏幕截图 PyScreeze是Python 2和3的一个简单的跨平台屏幕截图模块。 关于 PyScreeze可以拍摄截图&#xff0c;将它们保存到文件中&#xff0c;并在屏幕中定位图像。这是有用的&#xff0c;如果你有一个小的图像&#x…...

wimform 继承窗体卡顿解决

get { const int CS_NOCLOSE 0x200; CreateParams cp base.CreateParams; cp.ClassStyle cp.ClassStyle | CS_NOCLOSE; if (!DesignMode) { cp.ExStyle...

git 替换commit的账户与邮箱信息 GitLab: Committer‘s email does not follow the pattern

最终解决方法来源&#xff1a; https://segmentfault.com/q/1010000006999861 https://www.cnblogs.com/zh7791/p/12986083.html ① git rebase -i HEAD~N N代表前N次的提交记录 ② 出现记录后键入i进入INSERT模式&#xff0c;在需要修改的条目上&#xff0c;将pick改为edit…...

后端返回状态码401, 获取不到怎么办?

传送门...

解决for循环中异步请求顺序不一致的问题

解决for循环中异步请求顺序不一致的问题参考文章&#xff1a; &#xff08;1&#xff09;解决for循环中异步请求顺序不一致的问题 &#xff08;2&#xff09;https://www.cnblogs.com/mo3408/p/12163012.html 备忘一下。...

2021-08-23 arm开发板上执行程序报错:-sh: ./uart_app: No such file or directory

问题前提描述: 使用的是正点原子 arm alpha 开发板存在这个文件 其他相关问题: 刚出现这个问题时,我在csdn上搜到的其他造成原因: “doc格式(windows系统)、mac(苹果系统)在上传到xshell(unix系统)后, unix系统是不支持doc&#xff08;mac&#xff09;格式的” 如果是这种情况…...

可以ping通网关,dns。但是死活不能上网????怎么回事?

苹果电脑重装了一把win7系统。连接手机热点没问题&#xff0c;连接店里wifi也没问题。但是呢连接家里wifi死活不能上网&#xff01;&#xff01;&#xff01; 各种网上搜索啊&#xff0c;花了三四个小时&#xff0c;找到了各种解决方法&#xff0c;比如什么winsock reset还有什…...

win10开启局域网远程桌面连接

要求&#xff1a;两台电脑&#xff0c;同时连接在同一局域网。假设是电脑A开启允许局域网远程桌面&#xff0c;然后电脑B连接。这两台电脑需要按照下面的步骤来做。 一、电脑A 1.点击此电脑图标&#xff0c;右键&#xff0c;属性。 2.点击远程设置 3.开启允许被远程连接 4.打开…...

740_CTEX安装

全部学习汇总&#xff1a; https://github.com/GreyZhang/g_Tex 最终还是走上了这条路&#xff0c;没有抵制住这个神秘的诱惑。其实&#xff0c;TEX对我来说似乎并不是一个必须要接触的东西&#xff0c;接触的最大原因也是因为高德纳创造了他&#xff0c;我想看看这一套工具背后…...

Python Day9函数

一函数使用步骤 &#xff08;1&#xff09;定义函数 &#xff08;2&#xff09;调用函数 如&#xff1a; 若不调用函数&#xff0c;函数内部的代码不会执行 二函数的参数的作用 三函数的返回值的作用 在函数中&#xff0c;如果需要返回结果给用户需要使用函数返…...

《零基础安装 Oracle 数据库》RAC集群系列 ❸ 简单两步快速安装 Oracle 18C RAC 数据库

前言 很多朋友吐槽我的脚本不会用&#xff0c;看不懂&#xff0c;哎&#xff0c;一言难尽&#xff01;于是&#xff0c;我将 [vagrant virtualbox shell脚本] 组合起来&#xff0c;实现了零基础也可安装 Oracle 数据库的方式&#xff0c;我称之为 新手纯享版本&#xff0c;真…...

java16语言新特性

新语言特性 JEP 394&#xff0c;适用于 instanceof 的模式匹配模式匹配&#xff08;Pattern Matching&#xff09;最早在 Java 14 中作为预览特性引入&#xff0c;在 Java 15 中还是预览特性。模式匹配通过对 instacneof 运算符进行模式匹配来增强 Java 编程语言。模式匹配使程…...

入门图形学:屏幕波爆特效

最近bilibili看了黑神话悟空的UE5演示视频&#xff0c;感觉是真牛逼&#xff0c;地址&#xff1a;黑神花悟空UE5实机演示视频 遥想我也算是国内第一批用ue4的开发者了&#xff0c;15年开始用ue4.7源码版&#xff0c;做了一年多就又用回u3d了&#xff0c;哈哈&#xff0c;主要因…...

清新简约教育培训汇报总结PPT-朴尔PPT

清新简约教育培训汇报总结PPT模板。一套,总结报告,工作汇报,幻灯片模板&#xff0c;内含黄色,红色多种配色&#xff0c;简约,小清新,卡通风风格设计&#xff0c;动态播放效果&#xff0c;精美实用。 希望下面这份精美的PPT模板能帮助到你 基本信息 用途&#xff1a;,总结报告…...

【详细教程】-Python绘图模块Matplotlib

文章目录1 简介2 绘图标记2.1 fmt参数2.2 标记大小与颜色3 绘图线3.1 线的类型3.2 线的颜色3.3 线的宽度3.4 多条线4 轴标签和标题4.1 标题4.2 图形中文显示4.3 标题与标签的定位5 网格线6 绘制多个图6.1 subplot6.2 subplots7 散点图8 柱形图9 饼图1 简介 下面的代码通过两个…...

Java List remove时报UnsupportedOperationException

遇到的问题&#xff1a; 解决后&#xff1a; 源代码&#xff1a; /*** 需求&#xff1a;删除字符串中的a8&#xff0c;并重新组成字符串* param args*/public static void main(String[] args) {String str "a3,a4,a5,a6,a8";String[] moIds str.split(StringPool.…...

【论文阅读笔记】Partial Convolution based Padding

论文地址&#xff1a;https://arxiv.org/abs/1811.11718 代码地址&#xff1a;https://github.com/NVIDIA/partialconv 论文小结 本文提出一种有效地解决因padding造成的无效信息增加的方案。   本文提出的解决方案借鉴于partial convolution的思想&#xff0c;以此一起解决…...

dbc2000 注册机|dbc2000 注册码注册机下载

点击下载来源&#xff1a;dbc2000 注册机 dbc2000 注册机是同名源程序软件的注册机软件&#xff0c;该源程序软件是一款应用于数据库搭建以及数据写入的数据库架设工具&#xff0c;它拥有强大的数据写入功能&#xff0c;在作为应用程序使用时&#xff0c;它不仅可以充当数据属性…...

秋招面经第八弹:网易二面-数据开发工程师

秋招第八弹&#xff1a;网易二面-数据开发工程师 写在最前&#xff1a;秋招以来一直在冲&#xff0c;因为事情比较多&#xff0c;对于笔试面试一直没有复盘&#xff0c;现在靠仅存的记忆把面试的一些问题记录下来&#xff0c;尽可能记录出能回忆到的问题&#xff0c;但可能记的…...

安卓课程格子APP

https://download.csdn.net/download/weixin_57836618/73810452 功能演示&#xff1a; 查看所有课程 点击主页面空白处即可添加课程 添加课程之后查看课程 查看双周课程 查看单周课程 6.查看课程详情...

强化学习——格子世界

强化学习——格子世界 项目源码地址&#xff1a;https://gitee.com/infiniteStars/machine-learning-experiment 1. 实验内容 2. 实验代码 import numpy as np import matplotlib.pyplot as plt from matplotlib.table import Table from xml.dom.minidom import Document #手…...

华为机试 - 跳格子游戏

目录 题目描述 输入描述 输出描述 用例 题目解析 算法源码 题目描述 地上共有N个格子&#xff0c;你需要跳完地上所有的格子&#xff0c;但是格子间是有强依赖关系的&#xff0c;跳完前一个格子后&#xff0c;后续的格子才会被开启&#xff0c;格子间的依赖关系由多组st…...

php 爬课程表信息,Ruby爬取教务系统生成课程表

我为什么要虐自己最近觉得课程格子广告越来越多&#xff0c;乱七八糟的东西越来越多&#xff0c;完全失去了一开始的存在价值&#xff0c;并且没有电脑端app&#xff0c;想查看课程必须拿出手机&#xff0c;而我使用电脑频率要比手机高&#xff0c;所以才有了折腾的动力。于是我…...

android 课程表 ui,UICollectionViewLayout实现课程表布局

因为项目中有课程表的相关模块&#xff0c;第一时间想到用UICollectionView。然而后期的需求越来越复杂&#xff0c;每个格子需要展示的内容越来越多&#xff0c;所以不得不寻找合适的解决方案。最后发现自定义UICollectionViewLayout可以实现我的需求。先放效果图&#xff1a;…...

Android自定义View课程表,Android 自定义View课程表表格

自己闲下来时间写的一个课表控件使用的自定义LinearLayout 里面View都是用代码实现的 最终效果如下图 写的可能有问题希望多多指点创建一个自定义LinearLayout 控件用来装载课程的信息和课程的周数 和节数大概的布局三这样的根据上面的看来觉得总体布局我分了两个 上面的星期是…...

java课程设计设计_java课程设计

1. 团队课程设计博客链接https://www.cnblogs.com/choco1ate/p/12172223.html2.本组课题及本人任务本组课题&#xff1a;泡泡堂(炸弹人)游戏本人任务&#xff1a;Box类(游戏地图中的每个方格)Bomb类(游戏过程中的)游戏玩家输赢信息的文件储存3.需求分析Box类&#xff1a;该类为…...

《课程格子》的一个笔试题目

题目如下&#xff0c;感觉很适合喜欢琢磨的程序员&#xff0c;也是考验你编码风格的时候。 Lets make a tower defense game&#xff08;塔防游戏):1. You have 1 tower, with H health and D dps(damage per second).2. There are n attackers, each with h_i health and d_i …...

Android仿照超级课程表 or 课程格子 一键提取课表功能(方正系统)

参考文章http://blog.csdn.net/sbsujjbcy ,本文仿照‘ 安卓弟 提供的android 项目实战——打造超级课程表一键提取课表功能文章&#xff0c;对他的代码进行了修改和补充&#xff0c;为什么要修改呢&#xff1f;原因是安卓弟的那个源码版本过于老旧&#xff0c;很多方法已经过…...

C语言if 语句的基本用法

if语句可以对元素进行判断&#xff0c;满足条件后输出 if语句的基本结构 int main() {if(表达式1) //首先判断是否满足表达式1{语句1;}else if(表达式2) //若1不满足则判断是否满足表达式2{语句2;}...else //若所有条件均不满足&#xff0c;则执行else代码块中的语句{…...

C语言中if语句例题详解

例一&#xff1a;从键盘输入一个小于1000的正数&#xff0c;要求输出他的平方根&#xff08;如平方根不是整数&#xff0c;则输出其整数部分&#xff09;&#xff0c;要求在输入数据后先对其进行检查是否小于1000的正数。若不是&#xff0c;则要求重新输入 #include<math.h&…...

用什么c语言语句直接跳出if,C语言中怎样跳出if语句

我在全局脚本中用C写的 if 语句,一个脚本用了很多if语句,现在导致程序执行到某一步后,不执行了,请问大家怎样跳出单独的一个 if 语句?谢谢问题补充&#xff1a;用goto语句可以吗?就是一个if语句结束后就加一个goto,再在每一个if语句前加一个语句标号.我是在全局脚本中做故障报…...

C语言之if语句

C语言之if语句 一、简单形式的if语句可以让程序选择执行一条语句&#xff0c;或者跳过这条语句。 实例1&#xff1a;下面我们通过一个简单的代码来判定学生成绩是否合格&#xff1a; #include <stdio.h>int main() {int score;printf("请输入成绩&#xff1a;\n&…...

C语言循环逻辑之if语句

C语言选择结构之if语句 if…else…是C语言的选择结构&#xff0c;类同于生活中的选择&#xff0c;如走到分岔路口&#xff0c;选择向左还是向右&#xff1b;开车时开到红绿灯的反应&#xff0c;红灯应该停下来&#xff0c;绿灯可以一路畅通&#xff1b;去朋友家拜访&#xff0…...

C语言 分支语句:if 语句和 switch语句

目录 if 语句 悬空else —— else跟距离它最近的 if 匹配 if 书写形式的对比 if…else、if…else if…else if 和 if...if...if 语句的区别 switch语句 C语言是结构化的程序化设计语言&#xff01; 顺序结构 —— 从头做到尾&#xff0c;按顺序一步一步往下走 选择结构 —…...

C语言学习——if语句

if语句 一个基本的if语句有一个关键字if开头&#xff0c;跟上在括号里的一个表示条件的逻辑表达式&#xff0c;然后式一对大括号“{}”之间的若干条语句。如果表示条件的逻辑表达式的结果不是零&#xff0c;那么久执行后面跟着的这对大括号中间的语句&#xff0c;否则就跳过这…...

c语言中if语句嵌套的作用,if else语句,C语言if else用法完全攻略

生活中的很多事情都是在满足一定条件下发生的&#xff0c;同样&#xff0c;程序中的“某操作语句”也是在满足一定逻辑条件下才执行的&#xff0c;这种语句称作条件语句&#xff0c;或称为“if 语句”。使用 if 关键字&#xff0c;该“某操作语句”称为“if 体”或“条件语句体…...

c语言if语句用法总结,C语言if语句总结.doc

C语言if语句总结C语言选择语句C语言支持两种选择语句&#xff1a;if语句和switch语句。这些语句允许你只有在程序运行时才能。知道其状态的情况下&#xff0c;控制程序的执行过程。首先看一下if语句的用法&#xff1a;if语句&#xff1a;if语句是c语言中的条件分支语句。它能将…...