python-正则表达式之findall的用法
正则口径:知道前后取中间,如果最后$结束
python中则这表达式的方法通常由re.match re.search re.findall
re.findall匹配的时候,会把结果放到list返回,如果没有匹配到返回空list不会报错
import res1=re.compile('\d+')
# 匹配数字
r1=s1.findall('sahduasu27bhsagd7236vbcsahg923')print(r1)s2=re.compile('\d+')
r2=re.findall(s2, 'gashgddsh32hjsagd3jh4hjk234jkhk213')
print (r2)r3=re.findall('\d+', 'sjdjsk1232kdsjf324string')
print(r3)
# 执行结果
# ['27', '7236', '923']
# ['32', '3', '4', '234', '213']
# ['1232', '324']
示例及常用方式:
import rea = "hfdsakjhabsdgfjhabhjgdjabhjgajbkdkjdhfkaab"
# 1.找出字符串中有多少个ab, 两个字符挨着
r1= re.findall(r"ab", a)
print(r1)# 继续查找如ab, aab, aaab,aaaab这种,a可以重复,也就是匹配前面的a是1个或多个
# +是代表前面的字符出现1次或多次r2= re.findall(r"a+b", a)
print(r2)# *是代表匹配前面的字符出现0次或多次r3= re.findall(r"a*b", a)
print(r3)# 我们要匹配a和b之间有一个字符的,比如aab,abb,acb,adb都符合# .就是匹配除 \n (换行符)以外的任意一个字符r4= re.findall(r"a.b", a)
print(r4)# 执行结果:
# ['ab', 'ab', 'ab', 'ab']
# ['ab', 'ab', 'ab', 'aab']
# ['ab', 'ab', 'ab', 'b', 'aab']
# ['ajb', 'aab']
贪婪与非贪婪:
import re# 符号.* 贪婪,匹配从.*前面为开始到后面为结束的所有内容
a = "hfdsakjhabsdgfjhabhjgdjabhjgajbkdkjdhfkaabsdf"
r1= re.findall(r"a.*b", a)
print(r1)# 符号.*? 非贪婪,遇到开始和结束就进行截取,因此截取多次符合的结果,中间没有字符也会被截取r2= re.findall(r"a.*?b", a)
print(r2)# ['akjhabsdgfjhabhjgdjabhjgajbkdkjdhfkaab']
# ['akjhab', 'ab', 'ab', 'ajb', 'aab']
import re# # 符号.* 贪婪,匹配从.*前面为开始到后面为结束的所有内容
a = "hfdsakjhabsdgfjhabhjgdjabhjgajbkdkjdhfkaabsdf"
r1= re.findall(r"hfdsak.*?jgdj", a)
print(r1)r2= re.findall(r"hfdsak(.*?)jgdj", a)
print(r2)
# ['hfdsakjhabsdgfjhabhjgdj']
# ['jhabsdgfjhabh']
# 看到区别了么,就是取出来的数据是否带头尾
re.S
前面匹配都是一整串没有换行的情况,如果我们需要匹配的内容,中间刚好有换行了,那就匹配不到了。
import rea = '''hfdsakjhabsdgfjhabhjgdj
abhjgajbkdkjdhfkaabsdf'''
r1= re.findall(r"hfdsak.*?kjdh", a)
print(r1)
# []
r2= re.findall(r"hfdsak(.*?)jgdj", a,flags=re.S)
print(r2)
# ['jhabsdgfjhabh']
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。
修饰符 | 描述 |
---|---|
re.I | 使匹配对大小写不敏感 |
re.L | 做本地化识别(locale-aware)匹配 |
re.M | 多行匹配,影响 ^ 和 $ |
re.S | 使 . 匹配包括换行在内的所有字符 |
re.U | 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B. |
re.X | 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。 |
多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志
python-正则表达式之findall的用法相关推荐
- python 正则表达式 re findall 返回能匹配的字符串
python 正则表达式 re findall 方法能够以列表的形式返回能匹配的子串. re.findall(pattern, string[, flags]): 搜索string,以列表形式返回全部 ...
- Python 正则表达式:findall
本文以匹配×××IP为例,介绍re模块的findall的用法: 返回值->列表 复杂匹配 = re.compile(正则表达式): 将正则表达式实例化 + re.findall(要匹配的字符串) ...
- python 正则表达式 re.findall()方法
from <Python 爬虫开发 从入门到实战>谢乾坤 pattern表示正则表达式,string表示原来的字符串,flags表示一些特殊功能的标志. findall的结果是一个列表,包 ...
- Python——正则表达式特殊符号及用法
由于正则表达式的内容比较多,所以单独写成一系列文章,主要内容是根据小甲鱼所讲的内容综合一下正则表达式的笔记. 贴上小甲鱼的<Python3 如何优雅地使用正则表达式>系列可观看的博客地址: ...
- python正则表达式findall_正则表达式 re.findall 用法
正则 re.findall 的简单用法(返回string中所有与pattern相匹配的全部字串,返回形式为数组) 语法: findall(pattern, string, flags=0) impor ...
- python findall函数用法_Python--re模块的findall等用法
1)正则表达式含义 . # 点可代表一切字符 \ # 起转义作用 [...] # 指代方括号中的任意字符 \d # 指代数字0-9 \D # 指代非数字 \s # 指代一切空格,包括tab制表符.空格 ...
- 正则表达式 re.findall 用法
正则 re.findall 的简单用法(返回string中所有与pattern相匹配的全部字串,返回形式为数组) 语法: findall(pattern, string, flags=0) impor ...
- re模块findall函数用法
title: Python subtitle: 1.re模块findall函数用法 date: 2018-12-13 10:17:28 --- Python re 模块 findall 函数用法简述 ...
- python正则findall函数的用法_python中正则表达式 re.findall 用法
python中正则表达式 re.findall 用法 Python 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了r ...
- 【Python】一文读懂Python正则表达式常用用法
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 编辑:爱学AI 来源:geekvi 链接: www.segmentfault.co ...
最新文章
- 沃森世界研讨会前瞻:AI服务 了解客户情绪
- mac用什么写python程序_mac下的应用程序发布 及 打包(Python写的脚本,可打包第三方库)...
- P2327 [SCOI2005]扫雷
- 开发利器JRebel部署SpringBoot项目
- fastapi 基础使用
- Web API-时间对象和戳
- 基于node.js的express使用数据库时,解决异步调用的问题
- mac地址厂商查询_3.15干货你的手机mac地址泄漏了吗
- matlab边角网间接平差计算,第21讲间接平差实例.ppt
- 查看dSYM文件的UUID
- R语言|Rstudio|初学笔记
- windows截图快捷键
- 计算机网络安装,计算机网络系统安装操作指南.pdf
- U盘中的文件夹都变成了.exe文件
- 哈勃望远镜研究员测试区块链的空间数据处理
- 华为自带浏览器无法使用
- virtualbox导入ovf文件
- mybaits-plus 代码生成器
- linux 内存大页,Linux大页内存管理等---菜鸟初学
- java计算机毕业设计高校实习实训管理系统(附源码、数据库)