python正则查找_python正则匹配
在python中使用正则表达式
一、搜索和查找与正则相匹配的内容
1、re.compile的用法
compile(pattern, flags=0)把正则表达式编译为正则表达式对象
一个正则表达式的例子,从字符串string中找字符“the”出现的次数,不区分大小写:
#!/usr/bin/env python3
#正则表达式与模式匹配
import re
string="The quick brown fox jumps over the lazy dog."
string_list=string.split()
pattern=re.compile(r"The",re.I)
#re.compile函数将文本形式的模式编译成编译后的正则表达式(即正则表达式的编译)。
#r不是必须的,但是在正则表达式中使用原始字符串是一个好习惯
#re.I函数确保模式不区分大小写。
count=0
for word in string_list:
if pattern.search(word):
print(pattern.search(word).string)
count+=1
print("The出现的次数:{0:d}".format(count))
结果:
The
the
The出现的次数:2
2、re.search()
search(pattern, string, flags=0)返回第一个匹配到的对象,可以调用这个对象的 group()方法返回第一个匹配到的值。没有匹配上返回None。
查找第一次出现字母的对象:
#!/usr/bin/env python3#正则表达式与模式匹配
importre
res1= re.search(r'[a-z]+', r'jiem098mib562qwe678')print('search', res1)print(res1.group())
结果:
search jiem
3、re.match()
match(pattern, string, flags=0)和search用法一样,唯一区别就是只在字符串开始匹配
使用re.match方法,查找以185开头的电话号码
#!/usr/bin/env python3
#正则表达式与模式匹配
#re.match的使用
import re
string = "18512349553;18256785181;13698762112;18654320816;18511113141"
string_list = string.split(';')
count = 1
for word in string_list:
ret = re.match(r"^185\d{8}$", word)
if ret:
print("第"+str(count)+"个位置可以匹配,匹配结果是:"+ ret.string)
else:
print("第"+str(count)+"个位置不能匹配")
count+=1
结果:
第1个位置可以匹配,匹配结果是:18512349553
第2个位置不能匹配
第3个位置不能匹配
第4个位置不能匹配
第5个位置可以匹配,匹配结果是:18511113141
4、re.findall()
findall(pattern, string, flags=0)所有的匹配结果都返回在一个列表中,如果没有匹配上就返回一个空列表.
使用re.findall的方法。
将数字取出:
#!/usr/bin/env python3#正则表达式与模式匹配:re.findall
importre
string="a list of groups; this is not 123 and 456"res= re.findall(r'[0-9]+', string)print(res)
结果:
['123', '456']
5、finditer()
finditer(pattern, string, flags=0)根据正则表达式匹配字符串得到 一个迭代器,迭代器中每个元素都是一个对象,每个对象都可通过 group()方法获取对应的匹配值。(查找)
#!/usr/bin/env python3#正则表达式与模式匹配
importre
string="928jkh568isd123hde547vcx"res= re.finditer(r'\d+', string)print(res)for each inres:print(each)
结果:
二、切割和替换与正则相匹配的内容
1、sub()
sub(pattern, repl, string, count=0, flags=0)根据(pattern)正则表达式规则将匹配好的字符串替换为新字符串(repl),string为目标串,count可以指定替换次数
#!/usr/bin/env python3#正则表达式与模式匹配
importre
string="928jkh568isd123hde547vcx"res= re.sub(r'\D+', 'AAA',string)#\D匹配任何一个非数字字符
print(res)
结果:
928AAA568AAA123AAA547AAA
只替换前两次匹配的结果:
#!/usr/bin/env python3#正则表达式与模式匹配
importre
string="928jkh568isd123hde547vcx"res= re.sub(r'\D+', 'AAA',string,2)#\D匹配任何一个非数字字符
print(res)
结果:
928AAA568AAA123hde547vcx
2、subn()
subn(pattern, repl, string, count=0, flags=0)根据(pattern)正则表达式规则将匹配好的字符串替换为新字符串(repl),string为目标串,count可以指定替换次数.
返回的结果是元组,其中有替换结果和替换次数
#!/usr/bin/env python3#正则表达式与模式匹配
importre
string="928jkh568isd123hde547vcx"res= re.subn(r'\D+', 'AAA',string)#\D匹配任何一个非数字字符
print(res)
结果:
('928AAA568AAA123AAA547AAA', 4)
将匹配次数设置为3,则:
#!/usr/bin/env python3#正则表达式与模式匹配
importre
string="928jkh568isd123hde547vcx"res= re.subn(r'\D+', 'AAA',string,3)#\D匹配任何一个非数字字符
print(res)
结果:
('928AAA568AAA123AAA547vcx', 3)
3、split()
split(pattern, string, maxsplit=0, flags=0)按照正则表达式匹配好的字符串去切割目标字符串,匹配对的结果会先拿第一个结果切割目标串,
切割完后拿第二个结果切割这两个字符串,以此类推。可以指定最大切割次数,返回一个列表。
以数字分割该字符串:
#!/usr/bin/env python3#正则表达式与模式匹配
importre
string="928jkh568isd123hde547vcx"res= re.split(r'\d+', string)#\d匹配任何一个数字字符
print(res)
结果:
['', 'jkh', 'isd', 'hde', 'vcx']
最后展示一个这些函数应用的示例:
#!/usr/bin/env python3#正则表达式与模式匹配
importre
string="我爱你
我恨你
"res1= re.split(r'', string)#为匹配尖括号里的a或反斜杠a
print(res1[1])print("…………")
res2= re.finditer(r'', string)#为匹配尖括号里的字母数字或反斜杠的正则
for each inres2:print(each.group())print("…………")
res3= re.findall(r'', string)print(res3)print("…………")
res4= re.search(r'(?P\D+)\w+>(?P\D+)\w+>',string)print(res4.group('oo'))print(res4.group('nn'))print("…………")
res5= re.search(r'\w+)>(?P\w+)\w+>', r'hellohello')print(res5.group('tt'))print(res5.group('cc'))print(res5.group())
结果:
我爱你
…………
…………
['', '', '
', '
']
…………
我爱你
我恨你
…………
a
hellohello
原文链接:https://www.cnblogs.com/xiao-xue-di/p/9438165.html
python正则查找_python正则匹配相关推荐
- python正则查找_python正则查找
[转摘]PYTHON 正则表达式 网上转的一篇,把正则的规则系统的分类了.. 好文,共享,备查 ~~~~~~~~~~~ http://www.cnblogs.com/huxi/archive/2010 ...
- python re正则查找_python正则表达式 - re
1,匹配符号 基本元字符 . : 任意字符,除了\n,flags设置为DOTALL(S)可以让.匹配\n |:逻辑或 \:转义 ():捕获组 空白字符 [\b] : 回退 \f : 换页 \n : 换 ...
- python递归查找_Python程序使用递归查找数字的幂
python递归查找 Given the base x and the power y and we have to find the x to the power y using recursion ...
- python 中文查找_python 查找数据库
django.db.utils.ProgrammingError: 1146 的解决办法 在models中设置完数据库相关的东西后执行命令 python manage.py makemigration ...
- python 正则 空格_python 正则详解
正则表达式概述 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),是计算机科学的 ...
- python正则替换_python正则之替换字符串
替换字符串函数sub 可以将匹配的字符串替换成想要的字符串,并且替换方式可以自定义,可以传入一个自定义的函数对匹配到的字符串进行高级处理 sub(pattern, repl, string, coun ...
- python findall用法_Python 正则表达re模块之findall()详解
目录 一.re.findall函数介绍 二.代码如下 三.re.findall中正则表达式(.*?) 四.re.findall中参数re.S的意义 一.re.findall函数介绍 它在re.py中有 ...
- python读取html文件正则替换_Python正则获取和过滤或者替换HTML标签的方法说明
这篇文章主要介绍了Python通过正则表达式获取.过滤或者替换HTML标签的方法,感兴趣的小伙伴们可以参考一下 本文实例介绍了Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法 ...
- python 二分查找_Python实现二分法搜索
二分法是一种效率比较高的搜索方法,时间复杂度为 O(log2n) .假设有一个1~100之间的数字,你来猜这个数是多少,每猜一次可以得到三种回答:正确.大了或小了.如何保证用最少的次数猜对?很多人会想 ...
- python类似图片查找_python查找重复图片并删除(图片去重)
本文实例为大家分享了python查找重复图片并删除的具体代码,供大家参考,具体内容如下 和网络爬虫配套的,也可单独使用,从网上爬下来的图片重复太多,代码支持识别不同尺寸大小一致的图片,并把重复的图片删 ...
最新文章
- Rabbit-用户上线接收消息
- Oracle 11g 预定义账户和PLSQL工具、企业管理器的初步使用
- rpgmaker mv修改_吴青峰版一点点MV 释出,唱作女帝陈珊妮执导
- 【.NET架构】BIM软件架构02:Web管控平台后台架构
- java改错题技巧,看这篇文章准没错!
- php mkdir创建多级目录
- 计算机考研数据库原理知识,数据库原理考研资料题库真题整理
- unity自动生成敌人_敌人的自动生成 - Unity脚本编程 — Project 2:慕课英雄 MOOC HERO(第三人称射击简易版) | Coursera...
- 未转变者服务器保存红字警告,未转变者3.0怎么设置自己开的服
- qt界面切换时出现的绿色背景修改
- gdi与gdi+绘图效率_.NET和GDI +进行绘图[第1部分:基础知识]
- c语言实现七巧板积木拼图大全,七巧板拼图积木的制作方法
- 有一篇文章,共有3行文字,每行有最多80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
- Spark系列之SparkSubmit提交任务到YARN
- SIMD——MMX指令的溢出处理
- 小学四年级计算机教学工作总结,四年级数学教学工作总结
- 圆弧防线用计算机怎么算,圆弧放线计算公式
- 区块链论语:价值投资及区块链应用
- tsfresh四分位_时间序列挖掘分析:tsfresh特征中文(一)
- 关于浮点数的四舍五入方法。