python正则表达式

简介: python正则表达式--爬取百度文库内容


python 正则表达式

正则表达式是用来简洁表达一组字符串地表达式,是通用的字符串表达框架

正则表达式由字符和操作符组成:

操作符 说明
. 表示任何单个字符(除了换行)
[ ] 字符集,对单个字符给出取值范围,[abc]表示a、b、c中任一个,[a-z]表示a到z的单个字符
[^] 非字符集,对单个字符给出排除范围,[^abc]表示除了a、b、c之外的的单个字符
* 前一个字符0次或多次扩展 abc* 表示:ab、abc 、abc 、abcccc等
+ 前一个字符1次或多次扩展
前一个字符0次或者1次扩展
| 左右表达式任意一个 abc|def 表示abc 或者def
{m} 扩展前一个字符m次
{m,n} 扩展前面的一个字符m至n次(含n)
^ 匹配字符串开头 ^abc表示一个字符串的开头为abc
$ 匹配字符串结尾 abc$ 表示一个字符串的结尾为abc
( ) 分组标记,内部只能使用|操作符 (abc)表示abc ,(abc|def) 表示abc或者def
\d 十进制数字 ,介于[0-9]
\D 匹配任何非数据字符,等价于[^0-9]
\s 匹配任何空白字符;等价于[\f\n\r\t\v]
\S 匹配任何非空白字符
\w 单词字符,等价于[A-Za-z0-9 _ ]增加 A-Z,a-z,0-9和下划线_
\W 匹配任何非单词字符
\b 匹配单词的开始或结束
\B 匹配不是单词的开头或者结束的位置
\1…\9 匹配第n个分组的内容。 分组是()
{:n} 拓展一个字符0-n次,包含n
^[A-Za-z]+$  由26个字母组成的字符串
^[A-Za-z0-9]+$  由26个字母和数字组成的字符串

re库

标准库,用于字符串匹配

re库采用raw string 类型表示正则表达式,格式: r’text’

raw string 类型是原生字符串类型,不包含转义符的字符串

re库主要功能函数

  1. re.search()

在一个字符串中搜索匹配的正则表达式的第一个位置,返回match对象

  1. re.match()

从一个字符串的开始位置起匹配正则表达式,返回match对象

  1. re.findall()

搜索字符串,以列表类型返回全部能匹配的子串

  1. re.split()

将一个字符串按照正则表达式匹配的结果进行分隔,返回列表

  1. re.finditer()

搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象

  1. re.sub()
    在一个字符串中替换所有匹配的正则表达式的子串,返回替换后的字符串

函数的使用方法

  1. re.search(pattern,string,flags=0)
    pattern: 正则表达式的匹配字符串
    string: 待匹配的字符串
    flags: 正则表达式使用时的控制标记
    常用标记:
缩写 全写 说明
re.I re.IGNORECASE 忽略正则表达式的大小写 [A-Z]可以匹配小写
re.M re.MULTILINE 正则表达式中^操作符能够将给定字符串的每行当作匹配开始
re.S re.DOTALL 正则表达式中的.操作符能够匹配所有字符。默认.操作符匹配除换行符外的所有字符
  1. re.match(pattern,string,flags=0)
  2. re.findall(pattern,string,flags=0)
    返回列表类型
  3. re.split(pattern,string,maxsplit=0,flags=0)
    maxsplit:最大分割数,剩余部分作为最后一个元素输出
    将匹配的部分会去掉,其他的部分作为分隔的部分
  4. re.finditer(pattern,string,flags=0)
  5. re.sub(pattern,replace,string,count=0;flags=0)
    replace:替换匹配字符串的字符串
    count: 匹配的最大替换次数

re库的使用

函数式用法

一次性操作

rst.re.search(r’[1-9]\d{5}’,“BIT 100081”)

面向对象用法

编译后的多次操作

pat=re.compile(r’[1-9]\d{5}’) 编译

rst=pat.search(“BIT 100081”)

regex=re.compile(pattern,flags=0)
将正则表达式的字符串形式编译成正则表达式对象

re的match对象

match对象的属性

属性 说明
.string 待匹配的文本
.re 匹配时使用的pattern对象(正则表达式)
.pos 正则表达式搜索文本的开始位置
.endpos 正则表达式搜索文本的结束位置

match对象的方法

方法 说明
.group(n) 获得匹配后的第n个元素
.start() 匹配字符串在原始字符串的开始位置
.end() 匹配字符串在原始字符串中的结束位置
.span() 返回(.start(),.end()) 元组类型

贪婪匹配

re库默认采用贪婪匹配,即输出匹配的最长的子串

r'py.*N'

最小匹配

输出匹配的最小的子串

r'py.*?N' (加一个问号?)

*? 前一个字符0次或多次,最小匹配

+? 前一个字符1次或多次,最小匹配

?? 前一个字符0次或1次,最小匹配

{m,n}? 扩展前一个字符m至n次(含n),最小匹配

Re在线网站

https://tool.oschina.net/regex?optionGlobl=global

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

结果:

相关文章
|
4月前
|
Python
"揭秘!Python如何运用神秘的正则表达式,轻松穿梭于网页迷宫,一键抓取隐藏链接?"
【8月更文挑战第21天】Python凭借其强大的编程能力,在数据抓取和网页解析领域表现出高效与灵活。通过结合requests库进行网页请求及正则表达式进行复杂文本模式匹配,可轻松提取网页信息。本示例展示如何使用Python和正则表达式解析网页链接。首先确保已安装requests库,可通过`pip install requests`安装。接着,利用requests获取网页内容,并使用正则表达式提取所有`<a>`标签的`href`属性。
52 0
|
1月前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
46 5
|
1月前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
2月前
|
Python
【收藏备用】Python正则表达式的7个实用技巧
【收藏备用】Python正则表达式的7个实用技巧
32 1
|
2月前
|
数据安全/隐私保护 Python
Python实用正则表达式归纳
Python实用正则表达式归纳
20 3
|
2月前
|
Python
Python 正则表达式高级应用指南
正则表达式是文本模式匹配的强大工具,Python 的 `re` 模块支持其操作。本文介绍正则表达式的高级应用,包括复杂模式匹配(如邮箱、电话号码)、分组与提取、替换操作、多行匹配以及贪婪与非贪婪模式的区别。通过示例代码展示了如何灵活运用这些技巧解决实际问题。
31 7
|
2月前
|
JavaScript 前端开发 Scala
Python学习十:正则表达式
这篇文章是关于Python中正则表达式的使用,包括re模块的函数、特殊字符、匹配模式以及贪婪与非贪婪模式的详细介绍。
19 0
|
2月前
|
数据采集 开发者 Python
Python正则表达式之re.compile函数
`re.compile`是Python正则表达式处理中一个强大的工具,它通过预先编译正则表达式,不仅提升了执行效率,还增强了代码的组织性和可读性。掌握其使用,对于涉及文本分析、数据清洗、日志处理等领域的Python开发者来说,是非常必要的技能。正确并高效地应用这一功能,可以显著提升程序的性能和维护性。
134 0
|
3月前
|
索引 Python
30天拿下Python之正则表达式
30天拿下Python之正则表达式
20 0
|
3月前
|
数据采集 Python
Python正则表达式提取车牌号
Python正则表达式提取车牌号
49 0
下一篇
DataWorks