数据之路 - Python爬虫 - 正则表达式

一、常用匹配模式

\w      匹配字母数字及下划线
\W      匹配f非字母数字下划线
\s      匹配任意空白字符,等价于[\t\n\r\f]
\S      匹配任意非空字符
\d      匹配任意数字
\D      匹配任意非数字
\A      匹配字符串开始
\Z      匹配字符串结束,如果存在换行,只匹配换行前的结束字符串
\z      匹配字符串结束
\G      匹配最后匹配完成的位置
\n      匹配一个换行符
\t      匹配一个制表符
^       匹配字符串的开头
$       匹配字符串的末尾
.       匹配任意字符,除了换行符,re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符
[....]  用来表示一组字符,单独列出:[amk]匹配a,m或k
[^...]  不在[]中的字符:[^abc]匹配除了a,b,c之外的字符
*       匹配0个或多个的表达式
+       匹配1个或者多个的表达式
?       匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式
{n}     精确匹配n前面的表示
{m,m}   匹配n到m次由前面的正则表达式定义片段,贪婪模式
a|b     匹配a或者b
()      匹配括号内的表达式,也表示一个组

二、常用正则方法

1.match()方法

从字符串的起始位置匹配一个模式,如果不是起始位置匹配的话,match()就会返回None

语法格式:re.match(pattern,string,flags=0)

result.group()获取匹配的结果,result.span()获去匹配字符串的长度范围

import re

content= "hello 123 4567 World_This is a regex Demo"
result = re.match(‘^hello\s\d\d\d\s\d{4}\s\w{10}.*Demo$‘,content)
print(result)
print(result.group())
print(result.span())

匹配模式

re.I    使匹配对大小写不敏感
re.L    做本地化识别(locale-aware)匹配
re.M    多行匹配,影响^和$
re.S    使.匹配包括换行在内的所有字符
re.U    根据Unicode字符集解析字符。这个标志影响\w、\W、 \b和\B
re.X    该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解

很多时候匹配的内容是存在换行的问题的,这个时候的就需要用到匹配模式re.S来匹配换行的内容

import re

content = """hello 123456 world_this
my name is zhaofan
"""
result =re.match(‘^he.*?(\d+).*?zhaofan$‘,content,re.S)
print(result)
print(result.group())
print(result.group(1))

2.search()方法

在匹配时会扫描整个字符串,然后返回第一个成功匹配的结果。re.search(正则表达式,原字符串)

3.findall()方法

搜索整个字符串,然后返回匹配正则表达式的所有内容。re.findall(正则表达式,原字符串)

4.sub()方法

将一串文本中的所有数字都去掉。re.sub(正则表达式,替换成的字符串,原字符串)

5.compile()方法

将正则字符串编译成正则表达式对象,以便在后面的匹配中复用。

import re

content= """hello 12345 world_this
123 fan
"""
pattern =re.compile("hello.*fan",re.S)
result = re.match(pattern,content)
print(result)
print(result.group())

6.split()方法

将字符串用给定的正则表达式匹配的字符串进行分割,分割后返回结果list。

原文地址:https://www.cnblogs.com/Iceredtea/p/11286133.html

时间: 2024-07-30 23:19:20

数据之路 - Python爬虫 - 正则表达式的相关文章

数据之路 - Python爬虫 - Scrapy框架

一.Scrapy框架入门 1.Scrapy框架介绍 Scrapy是一个基于Twisted的异步处理框架,是纯Python实现的爬虫框架,其架构清晰,榄块之间的榈合程度低,可扩展性极强,可以灵活完成各种需求. Engine:引擎,处理整个系统的数据流处理.触发事务,是整个框架的核心. Item:项目,它定义了爬取结果的数据结构,爬取的数据会被赋值成该Item对象. Scheduler:调度器,接受引擎发过来的请求并将其加入队列中, 在引擎再次请求的时候将请求提供给引擎. Downloader:下载

数据之路 - Python爬虫 - Ajax

一.Ajax数据爬取 1.Ajax介绍 Ajax,全称为Asynchronous JavaScript and XML,即异步的JavaScript和XML. 它不是一门编程语言,而是利用JavaScript在保证页面不被刷新.页面链接不改变的情况下与服务器交换数据并更新部分网页的技术.发送Ajax请求到网页更新过程,简单分为以下3步:发送请求:解析内容:渲染网页.Ajax具有特殊的请求类型,它叫作xhr. 2.Ajax数据爬取 # 首先,定义一个方法来获取每次请求的结果. 在请求时,page是

数据之路 - Python爬虫 - PySpider框架

1.PySpider基本功能 提供方便易用的WebUI系统,可视化地编写和调试爬虫. 提供爬取进度监控. 爬取结果查看.爬虫项目管理等功能. 支持多种后端数据库,如MySQL. MongoDB. Redis. SQLite. Elasticsearch. PostgreSQL. 支持多种消息队列,如RabbitMQ. Beanstalk. Redis. Kombu. 提供优先级控制.失败重试.定时抓取等功能. 对接了PhantomJS,可以抓取JavaScript渲染的页面. 支持单机和分布式部

数据之路 - Python爬虫 - Json模块与JsonPath

一.什么是Json? json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构. 对象:对象在js中表示为{ }括起来的内容,数据结构为 { key:value, key:value, ... }的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是数字.字符串.数组.对象这几种. 数组:数组在js中是中括号[ ]括起来的

数据之路 - Python爬虫 - PyQuery库

一.什么是PyQuery? PyQuery库也是一个非常强大又灵活的网页解析库. 官网地址:http://pyquery.readthedocs.io/en/latest/ 二.PyQuery基本库使用 html = ''' <div> <ul> <li class="item-0">first item<lli> <li class="item-1"><a href="link2.html

Python爬虫-正则表达式

正则表达式 只提取关注的数据,进行数据赛选 原子: 基本组成单位 普通的字符 非打印支付 通用字符 普通的字符 >>> import re >>> pat="yue" >>> string="http://yum.iqianyue.com" >>> rst1=re.search(pat,string) >>> print(rst1) <_sre.SRE_Match obj

Python 爬虫-正则表达式

2017-07-27 13:52:08  一.正则表达式的概念 (1)正则表达式是用来简洁表达一组字符串的表达式,最主要应用在字符串匹配中. 正则表达式是用来简洁表达一组字符串的表达式 正则表达式是一种通用的字符串表达框架 正则表达式是一种针对字符串表达"简洁"和"特征"思想的工具 正则表达式可以用来判断某字符串的特征归属 (2)正则表达式是一个字符串,通过编译将符合正则表达式语法的字符串转换成正则表达式特征. 二.正则表达式的语法 正则表达式语法由字符和操作符构成

Python爬虫-正则表达式基础

import re #常规匹配 content = 'Hello 1234567 World_This is a Regex Demo' #result = re.match('^Hello\s\d\d\d\s\d{4}\s\w{10}.*Demo$',content) #print(result.group()) #print(result.span()) #泛匹配 #result = re.match("^Hello.*Demo$",content) #print(result)

python爬虫正则表达式

1.正则表达式概念:用来简洁表达字符串的方式.(regular expression     regex     RE)   通用的字符串框架   针对字符串表达"简洁"和"特征"思想的工具. 2.正则表达式的语法: 2.1."." :表示任何单个字符 2.2."[]" :字符集,对单个字符给出取值范围 [abc]表示a.b.c,[a-z]表示a到z单个字符 2.3."[^]" :非字符集 [^abc]表示