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

认识爬虫 —— 正则表达式提取

本质是对字符串的处理,正则表达式描述的是一种字符串匹配的模式。简而言之,用具备一定特征意义的表达式对字符串进行检查,将符合条件的子字符串提取出来。

导入模块

import re

一、单字符匹配

match(表达式,匹配对象):匹配某个字符串

import re
text = 'python'
result = re.match('py',text)
print(result.group())

>>> py

1.从起始位置进行匹配

2.只能匹配某个,并且返回的结果是object => 使用group()方法进行打印

3.匹配不到,不会报错,返回None

. :匹配任意的某个字符

import re
text = '1python'
result = re.match('.',text)
print(result.group())

>>> 1

1.无法匹配换行符

2.从起始位置进行匹配

\d:匹配任意的某个数字

从起始位置进行匹配

import re
text = '1python'
result = re.match('\\d',text)
print(result.group())

import re
text = '1python'
result = re.match(r'\d',text)
print(result.group())

>>> 1

\D:除数字外均可匹配

从起始位置进行匹配

import re
text = '_python'
result = re.match(r'\D',text)
print(result.group())

>>> _

\s:匹配空白字符

1.从起始位置进行匹配

2.\n \t \r 空格都表示空白字符

import re
text = '\npython'
result = re.match(r'\s',text)
print(result.group())

\w:匹配小写的a-z、大写的A-Z,数字和下划线

import re
text = '_python'
result = re.match(r'\w',text)
print(result.group())

>>> _

\W:匹配除小写\w之外的所有字符

eg. —

[]:表示组合方式,只要在中括号内的内容均可匹配

1.从起始位置进行匹配

2.[] 内多个匹配内容时,取"或",只要匹配对象中含有其中一个内容就匹配

import re
text = '?-python'
result = re.match('[-?]',text)
print(result.group())

>>> ?

二、多字符匹配

*:匹配零个或者多个字符

import re
text = '151-1234-5678'
result = re.match(r'[\d]*',text)
print(result.group())

>>> 151

+:匹配一个或者多个(至少有一个)

import re
text = 'a151-1234-5678'
result = re.match(r'[a\d]+',text)
print(result.group())

>>> a151 (匹配到不满足条件为止)

?:要么匹配0个,要么匹配1个

import re
text = '-a151-1234-5678'
result = re.match(r'[-a\d]?',text)
print(result.group())

>>> - (最多让你匹配一个)

{m}:匹配指定个数m

import re
text = '-151-1234-5678'
result = re.match(r'[-\d]{2}',text)
print(result.group())

>>> -1

{m,n}:匹配m到n个(默认匹配最多次)

import re
text = '-151-1234-5678'
result = re.match(r'[-\d]{2,4}',text)
print(result.group())

>>> -151

三、匹配规则的替代方案

1. \d ->> [0-9]:匹配所有的数字

2. \D ->> [^0-9]:匹配所有的非数字

3. \w ->> [0-9a-zA-Z_]:匹配所有的数字、字母和下划线

4. \W ->> [^0-9a-zA-Z_]:匹配所有的非数字、字母和下划线

5. [\d\D]、[\w\W]:匹配所有的字符

四、特殊匹配

[.]+:[.],表示的是仅表示匹配点(.),配合+,即匹配. 一次或多次

五、特殊匹配进阶

从头匹配

re.match:必须从字符串开头进行匹配,一旦起始位置出错,便报错

全局遍历

re.search:从左到右进行字符串的遍历,找到就返回,后续再次出现,但也不再返回结果

^:中括号内表示取反;中括号外表示以指定的字符开始

$:表示以...为结尾

| :匹配多个表达式或者字符串

六、贪婪模式与非贪婪模式

贪婪模式:正则表达式会尽可能多地匹配字符【默认就是贪婪模式】

非贪婪模式:正则表达式会尽可能少地匹配字符 【添加?】

http://www.dtcms.com/a/320679.html

相关文章:

  • MySQL数据库操作练习
  • 基于大数据的地铁客流数据分析预测系统 Python+Django+Vue.js
  • css 瀑布流布局
  • 查看泰山派 ov5695研究(1)
  • 线程池基础知识
  • gmssl私钥文件格式
  • Arm Qt编译Qt例程出错 GLES3/gl3.h: No such file or directory
  • 【前端后端部署】将前后端项目部署到云服务器
  • 终端是什么,怎么用?
  • 基于Spring Boot的Minio图片定时清理实践总结
  • Mac下安装Conda虚拟环境管理器
  • Vue3 计算属性与监听器
  • 基于django电子产品销售系统的设计与实现/基于python的在线购物商城系统
  • 豆包新模型矩阵+PromptPilot:AI开发效率革命的终极方案
  • 3 种简单方法备份 iPhone 上的短信 [2025]
  • 僵尸进程、孤儿进程、进程优先级、/proc 文件系统、CRC 与网络溢出问题处理(实战 + 原理)
  • 从安卓兼容性困境到腾讯Bugly的救赎:全链路崩溃监控解决方案-卓伊凡|bigniu
  • 【前端】纯代码实现Power BI自动化
  • 【Linux系统】万字解析,文件IO
  • 代码随想录刷题Day26
  • 最长回文子串
  • Redis(④-消息队列削峰)
  • 使用OAK相机实现智能物料检测与ABB机械臂抓取
  • 《Hive、HBase、StarRocks、MySQL、OceanBase 全面对比:架构、优缺点与使用场景详解》
  • Numpy科学计算与数据分析:Numpy数据分析与图像处理入门
  • [激光原理与应用-182]:测量仪器 - 光束型 - 光束质量分析仪
  • 无人机航拍数据集|第9期 无人机风力电机表面损伤目标检测YOLO数据集2995张yolov11/yolov8/yolov5可训练
  • WORD接受修订,并修改修订后文字的颜色
  • 2-等级保护
  • LabVIEW多循环架构