返回顶部
首页 > 资讯 > 后端开发 > Python >Python正则表达式re.compile()和re.findall()怎么使用
  • 908
分享到

Python正则表达式re.compile()和re.findall()怎么使用

2023-07-02 15:07:26 908人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍了python正则表达式re.compile()和re.findall()怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python正则表达式re.compile()和re.findal

这篇文章主要介绍了python正则表达式re.compile()和re.findall()怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python正则表达式re.compile()和re.findall()怎么使用文章都会有所收获,下面我们一起来看看吧。

前言

在使用爬虫提取网页中的部分信息时,采用到了re.compile()与re.findall()两种方法,目的:把网页中的“某某城市土地规划表”截取并打印出来.

网页中的代码:

 <span class='tab-details'>某某城市土地规划表</span>

提取的方法:

def parse_response(html):    pattern = re.compile('class=\'tab-details\'>(.*?)</span>',re.S)    items = re.findall(pattern,html)      print(items)        return items

结果:

['某某城市土地规划表']

这里主要讲解pattern,re.compile()与re.findall()的定义及用法:

pattern :pattern 属性规定用于验证输入字段的正则表达式。

re.compile():compile() 方法用于在脚本执行过程中编译正则表达式,也可用于改变和重新编译正则表达式。

举例:在字符串中全局搜索 "man",并用 "person" 替换。然后通过 compile() 方法,改变正则表达式,用 "person" 替换 "man" 或 "woman",:

<script type="text/javascript">var str="Every man in the world! Every woman on earth!"; patt=/man/g;str2=str.replace(patt,"person");//用person取代mandocument.write(str2+"<br />"); patt=/(wo)?man/g;patt.compile(patt);str2=str.replace(patt,"person");//用person取代man或者womandocument.write(str2); </script>

输出:(可见第一行中的man都被person取代,出现了woperson,第二行的的man和woman也被person取代,只有person,没有其他奇奇怪怪的字符串)

Every person in the world! Every woperson on earth!
Every person in the world! Every person on earth!

re.findall():额,这个最难搞,主要是为了讲解(.*?)

re.findall()函数是返回某种形式(比如String)中所有与pattern匹配的全部字符串,返回形式为数组

下面是findall()函数的两种表示形式:(上面的代码采取的便是第二种形式):

import rekk = re.compile(r'\d+')kk.findall('one1two2three3four4')#[1,2,3,4] #注意此处findall()的用法,可传两个参数;kk = re.compile(r'\d+')re.findall(kk,"one123")#[1,2,3]

下面的是常用的正则表达式:

import re str = 'aabbabaabbaa' # 一个"."就是匹配除 \n (换行符)以外的任意一个字符print(re.findall(r'a.b',str))#['aab', 'aab'] # *前面的字符出现0次或以上print(re.findall(r'a*b',str))#['aab', 'b', 'ab', 'aab', 'b'] # 贪婪,匹配从.*前面为开始到后面为结束的所有内容print(re.findall(r'a.*b',str))#['aabbabaabb'] # 非贪婪,遇到开始和结束就进行截取,因此截取多次符合的结果,中间没有字符也会被截取print(re.findall(r'a.*?b',str))#['aab', 'ab', 'aab'] # 非贪婪,与上面一样,只是与上面的相比多了一个括号,只保留括号的内容print(re.findall(r'a(.*?)b',str))#['a', '', 'a'] str = '''aabbab         aabbaa         bb'''     #后面多加了2个b # 没有把最后一个换行的aab算进来print(re.findall(r'a.*?b',str))#['aab', 'ab', 'aab'] # re.S不会对\n进行中断print(re.findall(r'a.*?b',str,re.S))#['aab', 'ab', 'aab', 'aa\n         b']

注意'.*?'是对它的前后部分作为开始结束部分进行截取,而'(.*?)'也是把其前后作为开始结束,但是只截取括号部分,不包含开始结束部分!!!(同时在对前后部分的选择时要注意特征明确点,就是与众不同的的嘛,防止截取出的是其他部分啊)

re.findall中参数re.S的意义:

字符串变为(后面多加了2个b)

str = '''aabbab         aabbaa         bb'''

参数无re.S,没有把最后一个换行的aab算进来

print(re.findall(r'a.*?b',str))#['aab', 'ab', 'aab']

参数有re.S,不会对\n进行中断

print(re.findall(r'a.*?b',str,re.S))#['aab', 'ab', 'aab', 'aa\n         b']

在我们一开始的代码中就有re.s,因为在爬取网页的内容时是按照一个一个块的来爬取,可以理解为并列部分,会存在/n分行符。

def parse_response(html):    pattern = re.compile('class=\'tab-details\'>(.*?)</span>',re.S)    items = re.findall(pattern,html)      print(items)        return items

关于“Python正则表达式re.compile()和re.findall()怎么使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Python正则表达式re.compile()和re.findall()怎么使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网Python频道。

--结束END--

本文标题: Python正则表达式re.compile()和re.findall()怎么使用

本文链接: https://lsjlt.com/news/342882.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python正则表达式re.compile()和re.findall()怎么使用
    这篇文章主要介绍了Python正则表达式re.compile()和re.findall()怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python正则表达式re.compile()和re.findal...
    99+
    2023-07-02
  • Python正则表达式re.compile()和re.findall()详解
    目录前言网页中的代码:提取的方法:re.findall中参数re.S的意义:参考:总结前言 在使用爬虫提取网页中的部分信息时,采用到了re.compile()与re.findall(...
    99+
    2024-04-02
  • 如何使用python正则表达式模块中的re.findall()函数
    本篇内容主要讲解“如何使用python正则表达式模块中的re.findall()函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用python正则表达式模块中的re.findall()函...
    99+
    2023-06-16
  • 在python正则表达式中是怎样正确使用正则表达式
    这篇文章将为大家详细讲解有关在python正则表达式中是怎样正确使用正则表达式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。现在我们已经看了一些简单的正则表达式,那么我们实际在 Python...
    99+
    2023-06-17
  • Python中怎么使用正则表达式及正则表达式匹配规则是什么
    1 导库import re2 使用模板re_pattern = re.compile(pattern, flags=0) result = re.findall(re_pattern,string)3 说明参数描述pattern匹配的正则表...
    99+
    2023-05-14
    Python
  • python 正则表达式的使用
    目录1、正则表达式 1.1 正则表达式字符串1.1.1 元字符1.1.2 字符转义1.1.3 开始与结束字符1.2 字符类1.2.1 定义字符类1.2.2 字符串取反1.2.3 区间...
    99+
    2024-04-02
  • Python的RegEx正则表达式怎么使用
    RegEx 或正则表达式是形成搜索模式的字符序列。RegEx 可用于检查字符串是否包含指定的搜索模式。RegEx 模块Python 提供名为 re 的内置包,可用于处理正则表达式。导入 re 模块:import rePython 中的 Re...
    99+
    2023-05-19
    Python regex
  • python中的正则表达式怎么使用
    这篇文章主要讲解了“python中的正则表达式怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python中的正则表达式怎么使用”吧!在Python中需要通过正则表达式对字符串进行匹配...
    99+
    2023-07-04
  • Python中使用正则表达式及正则表达式匹配规则详解
    目录1 导库2 使用模板3 说明4 示例5 正则表达式匹配规则1 导库 import re 2 使用模板 re_pattern = re.compile(pattern, flags...
    99+
    2023-03-22
    Python正则表达式匹配规则 Python正则表达式
  • python的正则表达式怎么用
    这篇文章主要为大家展示了“python的正则表达式怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python的正则表达式怎么用”这篇文章吧。一、正则表达式–元字符re 模块使 Python...
    99+
    2023-06-25
  • 怎么使用javascript正则表达式
    本篇内容介绍了“怎么使用javascript正则表达式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!表单验...
    99+
    2024-04-02
  • js 怎么使用正则表达式
    在 JavaScript 中,可以使用正则表达式的两种方式:使用 RegExp 对象或者使用正则表达式字面量。1. 使用 RegEx...
    99+
    2023-09-20
    js
  • pcre正则表达式怎么使用
    PCRE正则表达式的使用可以分为两个步骤:编译和匹配。1. 编译正则表达式:可以使用`preg_compile()`函数来编译一个正...
    99+
    2023-09-29
    pcre
  • C++怎么使用正则表达式
    今天小编给大家分享一下C++怎么使用正则表达式的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。目正则表达式正则表达式(regu...
    99+
    2023-06-30
  • Ruby正则表达式怎么使用
    这篇文章主要介绍了Ruby正则表达式怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Ruby正则表达式怎么使用文章都会有所收获,下面我们一起来看看吧。Ruby 正则表达式正则表达式是一种特殊序列的字符,它...
    99+
    2023-07-06
  • python 正则表达式
    正则表达式的作用:用来匹配字符串 一、字符串方法 字符串提供的方法是完全匹配,不能进行模糊匹配 s = 'hello world' # 字符串提供的方法是完全匹配,不能进行模糊匹配 print(s.find('ll')) # 2 ...
    99+
    2023-01-30
    正则表达式 python
  • python正则表达式
    笔记:一:简介 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 主要介绍Python中常用的正则表达式处理函数 提高工作效率,完成内置函数无法完成的任务! 搜索常用正则表达式!-...
    99+
    2023-01-30
    正则表达式 python
  • python 中正则表达式的使用
    正则表达式(re)(Regular Expression)。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。在pyth...
    99+
    2023-01-31
    正则表达式 python
  • python正则表达式re模块怎么使用
    这篇文章主要介绍“python正则表达式re模块怎么使用”,在日常操作中,相信很多人在python正则表达式re模块怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python正则表达式re模块怎么使用...
    99+
    2023-07-02
  • Python中的正则表达式怎么用
    这篇文章主要为大家展示了“Python中的正则表达式怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python中的正则表达式怎么用”这篇文章吧。1.正则表达式是什么很简单就是一种字符串匹配...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作