在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正则匹配相关推荐

  1. python正则查找_python正则查找

    [转摘]PYTHON 正则表达式 网上转的一篇,把正则的规则系统的分类了.. 好文,共享,备查 ~~~~~~~~~~~ http://www.cnblogs.com/huxi/archive/2010 ...

  2. python re正则查找_python正则表达式 - re

    1,匹配符号 基本元字符 . : 任意字符,除了\n,flags设置为DOTALL(S)可以让.匹配\n |:逻辑或 \:转义 ():捕获组 空白字符 [\b] : 回退 \f : 换页 \n : 换 ...

  3. python递归查找_Python程序使用递归查找数字的幂

    python递归查找 Given the base x and the power y and we have to find the x to the power y using recursion ...

  4. python 中文查找_python 查找数据库

    django.db.utils.ProgrammingError: 1146 的解决办法 在models中设置完数据库相关的东西后执行命令 python manage.py makemigration ...

  5. python 正则 空格_python 正则详解

    正则表达式概述 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),是计算机科学的 ...

  6. python正则替换_python正则之替换字符串

    替换字符串函数sub 可以将匹配的字符串替换成想要的字符串,并且替换方式可以自定义,可以传入一个自定义的函数对匹配到的字符串进行高级处理 sub(pattern, repl, string, coun ...

  7. python findall用法_Python 正则表达re模块之findall()详解

    目录 一.re.findall函数介绍 二.代码如下 三.re.findall中正则表达式(.*?) 四.re.findall中参数re.S的意义 一.re.findall函数介绍 它在re.py中有 ...

  8. python读取html文件正则替换_Python正则获取和过滤或者替换HTML标签的方法说明

    这篇文章主要介绍了Python通过正则表达式获取.过滤或者替换HTML标签的方法,感兴趣的小伙伴们可以参考一下 本文实例介绍了Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法 ...

  9. python 二分查找_Python实现二分法搜索

    二分法是一种效率比较高的搜索方法,时间复杂度为 O(log2n) .假设有一个1~100之间的数字,你来猜这个数是多少,每猜一次可以得到三种回答:正确.大了或小了.如何保证用最少的次数猜对?很多人会想 ...

  10. python类似图片查找_python查找重复图片并删除(图片去重)

    本文实例为大家分享了python查找重复图片并删除的具体代码,供大家参考,具体内容如下 和网络爬虫配套的,也可单独使用,从网上爬下来的图片重复太多,代码支持识别不同尺寸大小一致的图片,并把重复的图片删 ...

最新文章

  1. Rabbit-用户上线接收消息
  2. Oracle 11g 预定义账户和PLSQL工具、企业管理器的初步使用
  3. rpgmaker mv修改_吴青峰版一点点MV 释出,唱作女帝陈珊妮执导
  4. 【.NET架构】BIM软件架构02:Web管控平台后台架构
  5. java改错题技巧,看这篇文章准没错!
  6. php mkdir创建多级目录
  7. 计算机考研数据库原理知识,数据库原理考研资料题库真题整理
  8. unity自动生成敌人_敌人的自动生成 - Unity脚本编程 — Project 2:慕课英雄 MOOC HERO(第三人称射击简易版) | Coursera...
  9. 未转变者服务器保存红字警告,未转变者3.0怎么设置自己开的服
  10. qt界面切换时出现的绿色背景修改
  11. gdi与gdi+绘图效率_.NET和GDI +进行绘图[第1部分:基础知识]
  12. c语言实现七巧板积木拼图大全,七巧板拼图积木的制作方法
  13. 有一篇文章,共有3行文字,每行有最多80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
  14. Spark系列之SparkSubmit提交任务到YARN
  15. SIMD——MMX指令的溢出处理
  16. 小学四年级计算机教学工作总结,四年级数学教学工作总结
  17. 圆弧防线用计算机怎么算,圆弧放线计算公式
  18. 区块链论语:价值投资及区块链应用
  19. tsfresh四分位_时间序列挖掘分析:tsfresh特征中文(一)
  20. 关于浮点数的四舍五入方法。

热门文章

  1. Zigbee应用之搭建开发环境
  2. [NOI2015]小园丁与老司机,洛谷P2304,恶心的建图+有源汇上下界最小流
  3. 20162327WJH2016-2017-2《程序设计与数据结构》课程总结
  4. CentOS开机简要流程
  5. 音乐系统(译码作曲)
  6. 手写原笔迹输入_原笔迹真实展现 E人E本 M1手写功能体验
  7. 西安游记(兵马俑 -- 华清池)
  8. Adobe Photoshop 2022v23.4.2.603茶末余香增强版
  9. MIMO系统信道容量分析
  10. go语言入门(转载自开源社区)