python正则二
在python中,我们可以使用re模块来使用正则表达式。
正则表达式使用\对特殊字符进行转义,因为python本身也是用\作为转义,所以在使用正则的时候会出现这样的情况,'python\\.org',有两个斜杠,为了避免出现这种情况,我们可以使用如下方法:
r'python\.org'
re模块一些常用的方法。
findall
以列表形式返回所有匹配的字符串,如果没有匹配的就返回一个空列表。
还可以指定字符串的开始位置和结束位置。
import re
string = "abcd2135asdfasfd3425"
re = re.compile(r'\d+')
result1 = re.findall(string)
result2 = re.findall(string,0,8) # 指定起始位置,从第一个字符到第八个字符,所以最后的数字不会匹配上
print(result1)
print(result2) 结果:
['', '']
['']
search
只要找到一个匹配结果就返回,也可以指定起始位置。
import re
string = "abcd2135asdfasfd3425"
re = re.compile(r'\d+')
result1 = re.search(string)
result2 = re.search(string,0,6) # 指定起始位置,匹配从第1个字符到第6个字符中的数字
print(result1.group())
print(result2.group()) 结果:
2135
21
match
不指定起始位置,默认匹配字符串的头部。如果没有匹配上返回None。
import re
string = "abcd2135asdfasfd3425"
re = re.compile(r'\d+')
result1 = re.match(string)
result2 = re.match(string,2,6) # 从c开始匹配,又因为match是默认匹配字符串头部,而头部是c不是数字
result3 = re.match(string,4,6) # 从2开始匹配
print(result1)
print(result2)
print(result3.group()) 结果:
None
None
21
在线正则表达式匹配网站:https://regex101.com/ 我们可以在这里进行正则表达式的调试。

如上图,首先我们选择python,其次把目标字符串放入TEST STRING下面,然后在REGULAR EXPRESSION处写正则表达式进行匹配,如果匹配上了,下面的匹配上的字符串会实时改变颜色。
练习:
匹配下面这个html里面的skuid和skuimgurl两部分内容。
import re
import requests url = "http://qwd.jd.com/fcgi-bin/qwd_searchitem_ex?skuid=26878432382%7C1658610413%7C26222795271%7C25168000024%7C11731514723%7C26348513019%7C20000220615%7C4813030%7C25965247088%7C5327182%7C19588651151%7C1780924%7C15495544751%7C10114188069%7C27036535156%7C10123099847%7C26016197600%7C10503200866%7C16675691362%7C15904713681" session = requests.session()
r = session.get(url)
html = r.text reg = re.compile(r"\"skuid\":\"(\d+)\",\s+\"\S+\s+\"skuurl\"\S+\s+\"skuimgurl\":\"(\S+)\",") # 这里是正则部分
result = reg.findall(html) # 因为我们要找到该网页中的所有的匹配的结果,所以用findall
print(result)
返回的结果如下:
[('', 'https://img11.360buyimg.com/n7/jfs/t18226/169/1318243724/390477/5b0718ff/5ac44edcNa350dbd9.jpg'),
('', 'https://img11.360buyimg.com/n7/jfs/t17461/138/1837663326/68820/5f8da5cd/5ad9b1e2N42bce837.jpg'),...........]
上面的正则部分还可以写成如下格式:
\"skuid\":\"*(\d+)\"\S\s+\"\w+\":\".*?\"skuimgurl\":\"(.*?.jpg)
在正则表达式中常用的元字符有如下:
\ 转义字符
\s 匹配空白字符
\S 匹配非空白字符
\w 匹配包括下划线的任何单词字符
\W 匹配非单词字符
\d 匹配数字
| 代表左右表达式任意匹配一个
^ 匹配字符串开始
$ 匹配字符串结尾
python正则二的更多相关文章
- python 正则,常用正则表达式大全
Nginx访问日志匹配 re.compile #re.compile 规则解释,改规则必须从前面开始匹配一个一个写到后面,前面一个修改后面全部错误.特殊标准结束为符号为空或者双引号: 改符号开始 从 ...
- 认识python正则模块re
python正则模块re python中re中内置匹配.搜索.替换方法见博客---python附录-re.py模块源码(含re官方文档链接) 正则的应用是处理一些字符串,phthon的博文python ...
- Python正则式的基本用法
Python正则式的基本用法 1.1基本规则 1.2重复 1.2.1最小匹配与精确匹配 1.3前向界定与后向界定 1.4组的基本知识 2.re模块的基本函数 2.1使用compile加速 2.2 ma ...
- python 正则使用笔记
python正则使用笔记 def remove_br(content): """去除两边换行符""" content = content.r ...
- Python正则处理多行日志一例
正则表达式基础知识请参阅<正则表达式基础知识>,本文使用正则表达式来匹配多行日志并从中解析出相应的信息. 假设现在有这样的SQL日志: SELECT * FROM open_app WHE ...
- Python正则匹配字母大小写不敏感在读xml中的应用
需要解决的问题:要匹配字符串,字符串中字母的大小写不确定,如何匹配? 问题出现之前是使用字符串比较的方式,比如要匹配'abc',则用语句: if s == 'abc':#s为需要匹配的字符串 prin ...
- Python 基础 二
Python 基础 二 今天对昨天学习的Python基础知识进行总结,学而不思则惘,思而不学则殆! 一.先对昨天学习的三大循环的使用情况进行总结: 1.while循环的本质就是让计算机在满足某一条件的 ...
- 初学Python(二)——数组
初学Python(二)——数组 初学Python,主要整理一些学习到的知识点,这次是数组. # -*- coding:utf-8 -*- list = [2.0,3.0,4.0] #计算list长度 ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
随机推荐
- 问题集录--jquery将json转excel保持
代码如下: <html> <head> <meta http-equiv="content-type" content="text/html ...
- 移动端使用的WebKit私有属性(转)
<!DOCTYPE HTML><html><head> <meta charset="utf-8"> <title>无标 ...
- maven+tomcat热部署
1.首先修改tomcat安装目录下的conf文件夹中的tomcat-user.xml文件 <role rolename="manager-gui"/> <role ...
- MySQL学习基础
MySQL是被Sun公司收购了,所以也有热咖啡图标,不过MySQL的作者后来又做了一个MariaDB,小海豚图标,也很好用. MySQL学习: <MySQL网络数据库设计与开发>(电子工业 ...
- spring 事务管理机制
1. spring 事务管理抽象 spring 的事务策略机制的核心就是 org.springframework.transaction.PlatformTransactionManager 接口. ...
- K:单例模式中存在的问题
对于单例模式的实现,无论其是否具有懒加载的功能,我们的目标是有且仅生成一个对象.但是,实际上,对于单例模式的一般实现,都会存在着以下的两个问题: 序列化攻击: 对于枚举方式实现的单例模式,并不存在 ...
- C++ STL:vector实现
练习一发,主要是使用placement new在原始内存上创建对象.半路md面试电话来了,赶紧存档,看Java大法 #include <iostream> #include <cst ...
- 洛谷P3763 [TJOI2017]DNA(后缀数组 RMQ)
题意 题目链接 Sol 这题打死我也不会想到后缀数组的,应该会全程想AC自动机之类的吧 但知道这题能用后缀数组做之后应该就不是那么难了 首先把\(S\)和\(S0\)拼到一起跑,求出Height数组 ...
- Http Status Code 套餐合集(转载)
1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 100(继续)请求者应当继续提出请求. 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分. 101(切换协议)请求者已要 ...
- jQuery中判断input的checked属性
<input type="checkbox" id="ipt1" checked> <input type="checkbox&qu ...