学习笔记37用正则表达式解析和提取数据

SAP剑客 SAP剑客     2023-01-23     622

关键词:

用正则表达式解析和提取数据

正则表达式是一种非常好用的信息提取手段,它可以高效的从文本中提取所需信息。

1、findall()函数

基本语法格式:

re.findall(匹配规则,原始文本)

例子:提取“Hello 123 World!”中的3个数字。

 

匹配规则中,‘/d’表示匹配一个数字,连续三个‘/d’就表示匹配连续的三个数字。

返回的结果是一个含有字符串元素的列表,而不是单纯的字符串或者数字。

 

常见的匹配符

符号

含义

\\d

匹配1个数字字符

\\w

匹配1个字母、数字或下划线字符

\\s

匹配1个空白字符(换行符、制表符、普通空格等)

\\S

匹配1个非空白字符

\\n

匹配1个换行符(相当于按下一次回车)

\\t

匹配1个制表符(相当于按下Tab键或者8次空格键)

.

匹配1个任意字符,换行符除外

*

匹配0个或者多个表达式

+

匹配1个或者多个表达式

?

常与“.”和“*”配合使用,组成非贪婪匹配

()

匹配括号内的表达式,也表示一个组

2、非贪婪匹配“(.*?)

“.”表示匹配除了换行符以外的1个任意字符,“*”表示匹配0个或者多个表达式,两者合在一起“.*”则称的规则称为贪婪匹配,如果后面再加上“?”就变成了非贪婪匹配。

“(.*?)”用于提取文本A与文本B之间的内容,并不需要知道内容的确切长度和格式,但是需要知道内容位于哪两串文本之间,基本语法如下:

文本A(.*?)文本B

 

 

3、非贪婪匹配“.*?

另一种非贪婪匹配的语法格式如下:

文本A.*?文本B

“.*?”用于代替文本A和文本B之间的所有内容,因为文本A和文本B之间的内容经常变动或者毫无规律,不能直接写到匹配规则里面,也或者文本A和文本B之间的内容很多,不方便写到匹配规则里面。

 

4、自动考虑换行的修饰符re.S

修饰符有很多,最常用的是re.S,其作用是让findall()函数再查找时可以自动考虑换行的影响,使得贪婪匹配可以匹配换行。

基本的语法格式如下:

re.findall(匹配规则,原始文本,re.S)

 

5、辅助功能介绍

sub()函数

sub()函数名称源于英文单词substitute(替换),作用是清洗正则表达式提取出来的内容,其基本语法如下:

re.sub(需要替换的内容,替换值,原字符串)

比如正则表达式提取出来的内容中还夹杂着一些无用内容,传统的处理方式是使用replace()函数处理,当然也可以,但是使用sub()函数则更加灵活高效。

其中的“<.*?>”代表任何“<***>”形式的字符串,这样一来自然涵盖了全部内容。

中括号“[ ]”的用法

在正则表达式中,“.”、“*”、“?”等符号都有特殊的含义,那么如果想要匹配的就是这些字符怎么办呢?这里就需要使用中括号“[ ]”,取消这些符号的特殊含义。

 

 

6、综合实例

爬取某小说网上某部小说的全部章节,保存到本地txt文件中。

 

jmeter学习笔记(代码片段)

文章目录1、CSVDataSetConfig2、正则表达式提取器2.1、正则表达式——只有一个的匹配值(1)正则表达式测试(2)正则表达式提取器的配置(3)在其它组件中引用2.2、正则表达式——有多个匹配的值(1&#x... 查看详情

jmeterjson提取器和正则表达式提取器

...后面使用$Variablenames引用JSONPathexpressions:调试通过的jsonpath表达式——具体指是取值的路径第一个.代表第二个.代表dataid代表idMatchNo.(0forRandom):匹配数字(0代表随机,1代表第一个,-1代表所有)Computeconcatenationvar(suffix_ALL):是否统计... 查看详情

爬虫学习笔记beautifulsoup使用

上篇博客说了正则表达式,但是正则学起来比较费劲,写的时候也不好写,这次说下BeautifulSoup怎么用,这个模块是用来解析html的,它操作很简单,用起来比较方便,比正则学习起来简单多了。这是第三方模块需要安装 123pipi... 查看详情

正则表达式的学习笔记

阅读《正自表达式30分钟入门教程》内容记录:一、元字符:/b:代表的单词的开头和结尾,也就是单词的分界处。它只匹配一个位置。(它的前一个字符和后一个字符不全是/w)示例:要在him,history,high,hi里匹配hi这个单词用hi查找... 查看详情

html入门笔记(代码片段)

今天主要学习了JavaScript的正则表达式,下面就来分享一下今天的学习收获。一、正则表达式1.什么是正则表达式?正则表达式是由一个字符序列形成的搜索模式。当你在文本中搜索数据时,你可以用搜索模式来描述你... 查看详情

python爬虫之beautifulsoup库,基本使用以及提取页面信息(代码片段)

一、BeautifulSoup简介爬虫正则表达式参考:Python爬虫正则表达式和re库在爬虫过程中,可以利用正则表达式去提取信息,但是有些人觉得比较麻烦。因为花大量时间分析正则表达式。这时候可以用高效的网页解析库Beauti... 查看详情

学习正则表达式笔记

1.正则表达式简介  正则表达式为高级的文本模式匹配,抽取,与和或形式的搜索和替换功能提供了基础。也就是说正则表达式(RegEx)能匹配到多个字符,你就可以很容易的操作这些匹配到的字符,只要你运用正确的字符和... 查看详情

数据提取

...理。非结构化的数据处理文本、电话号码、邮箱地址正则表达式HTML文件正则表达式XPathCSS选择器结构化的数据处理JSON文件JSONPath转化成 查看详情

使用 Python 正则表达式提取数据

】使用Python正则表达式提取数据【英文标题】:ExtractingDatawithPythonRegularExpressions【发布时间】:2013-04-0405:10:17【问题描述】:我在围绕Python正则表达式想出一个正则表达式来提取特定值时遇到了一些麻烦。我尝试解析的页面有许... 查看详情

深入浅出图神经网络|gnn原理解析☄学习笔记表示学习(代码片段)

深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习文章目录深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习表示学习表示学习的意义离散表示与分布式表示端到端学习基于重构损失的方法—... 查看详情

java正则表达式解析数据(代码片段)

...#xff0c;现在需要我们把DayDayUp获取出来。则需要先写提取的表达式,StringREGEX=“nameis:(.*?)\\.and”;整体逻辑如下:@TestpublicvoidspliteAppNameTest2()StringdataId="helloworldmynameis:DayDayUp.andmybirthdayis8.9.unmappedReason,version";Strin... 查看详情

非结构化数据与结构化数据提取---正则表达式re模块(代码片段)

...理。非结构化的数据处理文本、电话号码、邮箱地址正则表达式HTML文件正则表达式XPathCSS选择器结构化的数据处理JSON文件JSONPath转化成 查看详情

Python 用正则表达式解析数据变成字典。

】Python用正则表达式解析数据变成字典。【英文标题】:Pythonparsedatawithregularexpressionsturnintodictionary.【发布时间】:2016-01-0807:46:46【问题描述】:我有一串数据。我想把它变成一个字典ff=\'wrapper:one:now:"",up:"north",down:"south"\'请注意... 查看详情

爬虫学习——网页解释器简介

   一、Python的网页解析器 正则表达式:将整个网页文档当作字符串,然后使用模糊匹配的方式,来提取出有价值的数据和新的url  优点:看起来比较直观  缺点:若文档比较复杂,这种解析方式会显得很麻烦... 查看详情

学习正则表达式笔记

...表示。代表可以从多个模式中选择一个,可用于分割正则表达式。例如:ABC|abc表示即可以匹配ABC,又可以匹配abc。2.匹配任意单个字符点号(.)可以匹配除换行符 以外的任意字符,无论是空格,字母,数字,可打印字符、不可... 查看详情

javase学习笔记之正则表达式(二十五)

正则表达式:其实是用来操作字符串的一些规则。好处:正则的出现,对字符串的复杂操作变得更为简单。特点:将对字符串操作的代码用一些符号来表示。只要使用了指定符号,就可以调用底层的代码对字符串进行操作。符号... 查看详情

正则表达式学习笔记

 1.对特殊字符进行转义2.匹配空白字符   匹配两条记录之间的空白行3.匹配特定字符类别3.1匹配(非)数字3.2匹配(非)字母和数字3.3匹配(非)空白字符3.4使用POSIX字符类  查看详情

学习笔记:正则表达式

...配字符串的开始位置。$:匹配字符串的结束位置。():子表达式的开始和结束位置。[]:中括号表达式的开始和结束位置。{}:限定符表达式的开始和结束位置。*:匹配前面的子表达式零次或多次。+:匹配前面的子表达式一次或... 查看详情