热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python教程分享python正则表达中的re库常用方法总结

元字符 :预定义字符集:我进行组合一些复杂的正则表达式的时候是为了快捷去晚上找一些现成的模式,然后再自己进行修改,变成符合自己需要的一些正则表达式。importre#正则

元字符 :

python正则表达中的re库常用方法总结

预定义字符集

python正则表达中的re库常用方法总结

我进行组合一些复杂的正则表达式的时候是为了快捷去晚上找一些现成的模式,然后再自己进行修改,变成符合自己需要的一些正则表达式。

import re     # 正则表达式中的一些使用的符号     # 匹配出现符合条件的 0 次的或者是 多次     str1 = 'qwertyuio1ui3oo467j398k'     #  关键词: *    下面的句子就是进行匹配 零次 或者是 多次(多个字符) 符合是数字的意思  pattern = re.compile(r'd*')  res = re.findall(pattern, str1)  print(res)  """"  显示的结果:  ['', '', '', '', '', '', '', '', '', '1', '', '', '3', '', '', '467', '', '398', '', '']  """  # 关键词: +  匹配一次或者是多次的结果     pattern = re.compile(r'd+')  res = re.findall(pattern, str1)  print(res)  """  显示结果:  ['1', '3', '467', '398']  """     # 关键词: ?  匹配0次或者是1次的结果     pattern = re.compile(r'd?')  res = re.findall(pattern, str1)  print(res)  """  ['', '', '', '', '', '', '', '', '', '1',   '', '', '3', '', '', '4', '6', '7', '',   '3', '9', '8', '', '']  """    # {m}精确匹配m次  (比如写进去的3,那么他就是匹配到是3个数字字符串的所有小字符串)  pattern = re.compile(r'd{3}')  res = re.findall(pattern, str1)  print(res)  # 结果:['467', '398']     # {m, n} 最少匹配m次,最多匹配n次  # 记住在{}里面是不能随便加上空格的?  pattern = re.compile(r'd{1,3}')  res = re.findall(pattern, str1)  print(res)  # 结果:['1', '3', '467', '398']

match()函数只检测 目标字符(串) 是不是在string的开始位置匹配,search()会扫描整个string查找匹配, match()只有在0位置匹配成功才会有返回,如果不是开始位置匹配成功,match()就会返回none

代码解释:

import re

m = re.match('lsp','hhttlsp')

if m is not none

        print(m.group())

else:

        print('nonefine')

显示结果:

nonefine

n = re.search('lsp','hhttlsp')

if n is not none:

        print(n.group())

else:

        print(nonefine')

显示结果:

lsp

import re  n = re.search('lsp','hhttlsp')  if n:      print(n.group())  else:      print('nonefine')  # 显示结果:  # lsp  m = re.match('lsp','hhttlsp')  if m:      print(m.group())  else:      print('nonefine')  # 显示结果:  # nonefine

python的re库有两个函数/方法用于实现搜索和替换功能: sub()和subn().两者几乎一样,都是将某字符串中所有匹配正则表达式的部分进行某种形式的替换.用来替换的部分通常是一个字符串,但它也可能是一个函数,该函数返回一个用来替换的字符串.subn()和 sub()一样,但subn()还返回一个表示替换的总数,替换后的字符串和表示替换总数的数字一起作为一个拥有两个元素的元组返回.

# 可以使用sub()方法来进行查询和替换,sub方法的格式为:  # sub(replacement, string[, count=0])  # replacement是被替换成的文本  # string是需要被替换的文本  # count是一个可选参数,指最大被替换的数量     # 下面进行将所有的数字给进行替换掉  pattern = re.compile(r'd')  res = re.sub(pattern, '替换掉的数字  ',str1)  print(res)  # 下文结果,为了方便大家看到换了多少个数字,我使用了换行将字符串给换行看出有几次换了数字  """  qwertyuio替换掉的数字    ui替换掉的数字    oo替换掉的数字    替换掉的数字    替换掉的数字    j替换掉的数字    替换掉的数字    替换掉的数字  k  """
# 加上显示修改了多少次  res = re.subn(pattern, '替换掉的数字  ',str1)  print(res)  """  结果:  ('qwertyuio替换掉的数字    ui替换掉的数字     oo替换掉的数字     替换掉的数字      替换掉的数字       j替换掉的数字       替换掉的数字       替换掉的数字        k', 8)  """

re.split(pattern, string, maxsplit=0, flags=0),如果匹配成功,则返回一个列表,否则返回原string列表;

  • 第1个参数:正则表达式
  • 第2个参数:要匹配查找的原始字符串;
  • 第3个参数:可选参数,表示最大的拆分次数,默认为0,表示全部分割;
  • 第4个参数:可选参数,标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等;

特别注意: 此方法并不是完全匹配。它仅仅决定在字符串开始的位置是否匹配。所以当pattern结束时若还有剩余字符,仍然成功。若想进行完全匹配,可以在表达式末尾加上边界匹配符'$'

str2 = '自然语言处理123机器学习456深度学习'  pattern = re.compile(r'd+')  res = re.split(pattern, str2)  print(res)  # 结果:  # ['自然语言处理', '机器学习', '深度学习']

python的re模块是第一个提出解决方案的模块:命名捕获组和命名后向引用。(?p group)将组的匹配捕获到后向引用“名称”中。

str2 = '自然语言处理123机器学习456深度学习'  pattern = re.compile(r'(?pd+)(?pd+)')  m = re.search(pattern, str2)  print(m.group('lsp'))  # 结果为:  # 机器学习
str2 = '自然语言处理123机器学习456深度学习'  pattern = re.compile(r'(?pd+)(?pd+)')  m = re.search(pattern, str2)  print(m.group('dota'))  # 结果为:  # 123

进行号码的筛选,小尝试:

# 筛选号码  str3 = 'number  132-3209-*******'  pattern = re.compile(r'(ddd-dd)')  res = re.search(pattern, str3)  print(res.group())  # 显示结果:  # 132-32

全部代码:

# -*- coding:utf-8 -*-  # @author : dafuchen  # @file : demo1.py  # @software: pycharm    import re     # 正则表达式中的一些使用的符号     # 匹配出现符合条件的 0 次的或者是 多次     str1 = 'qwertyuio1ui3oo467j398k'     #  关键词: *    下面的句子就是进行匹配 零次 或者是 多次(多个字符) 符合是数字的意思  pattern = re.compile(r'd*')  res = re.findall(pattern, str1)  print(res)  """"  显示的结果:  ['', '', '', '', '', '', '', '', '', '1', '', '', '3', '', '', '467', '', '398', '', '']  """     # 关键词: +  匹配一次或者是多次的结果     pattern = re.compile(r'd+')  res = re.findall(pattern, str1)  print(res)  """  显示结果:  ['1', '3', '467', '398']  """     # 关键词: ?  匹配0次或者是1次的结果     pattern = re.compile(r'd?')  res = re.findall(pattern, str1)  print(res)  """  ['', '', '', '', '', '', '', '', '', '1',   '', '', '3', '', '', '4', '6', '7', '',   '3', '9', '8', '', '']  """  # {m}精确匹配m次  (比如写进去的3,那么他就是匹配到是3个数字字符串的所有小字符串)  pattern = re.compile(r'd{3}')  res = re.findall(pattern, str1)  print(res)  # 结果:['467', '398']     # {m, n} 最少匹配m次,最多匹配n次  # 记住在{}里面是不能随便加上空格的?  pattern = re.compile(r'd{1,3}')  res = re.findall(pattern, str1)  print(res)  # 结果:['1', '3', '467', '398']     import re     n = re.search('lsp','hhttlsp')  if n:      print(n.group())  else:      print('nonefine')  # 显示结果:  # lsp     m = re.match('lsp','hhttlsp')  if m:      print(m.group())  else:      print('nonefine')  # 显示结果:  # nonefine     # 可以使用sub()方法来进行查询和替换,sub方法的格式为:  # sub(replacement, string[, count=0])  # replacement是被替换成的文本  # string是需要被替换的文本  # count是一个可选参数,指最大被替换的数量     # 下面进行将所有的数字给进行替换掉  pattern = re.compile(r'd')  res = re.sub(pattern, '替换掉的数字  ',str1)  print(res)  # 下文结果,为了方便大家看到换了多少个数字,我使用了换行将字符串给换行看出有几次换了数字  """  qwertyuio替换掉的数字    ui替换掉的数字    oo替换掉的数字    替换掉的数字    替换掉的数字    j替换掉的数字    替换掉的数字    替换掉的数字  k  """     # 加上显示修改了多少次  res = re.subn(pattern, '替换掉的数字  ',str1)  print(res)  """  结果:  ('qwertyuio替换掉的数字    ui替换掉的数字     oo替换掉的数字     替换掉的数字      替换掉的数字       j替换掉的数字       替换掉的数字       替换掉的数字        k', 8)  """  str2 = '自然语言处理123机器学习456深度学习'  pattern = re.compile(r'd+')  res = re.split(pattern, str2)  print(res)  # 结果:  # ['自然语言处理', '机器学习', '深度学习']  str2 = '自然语言处理123机器学习456深度学习'  pattern = re.compile(r'(?pd+)(?pd+)')  m = re.search(pattern, str2)  print(m.group('dota'))  # 结果为:  # 123     # 筛选号码  str3 = 'number  132-3209-*******'  pattern = re.compile(r'(ddd-dd)')  res = re.search(pattern, str3)  print(res.group())  # 显示结果:  # 132-32

到此这篇关于python正则表达中的re库常用方法总结的文章就介绍到这了,更多相关python re库内容请搜索<编程笔记>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<编程笔记>!

需要了解更多python教程分享python正则表达中的re库常用方法总结,都可以关注python教程分享栏目&#8212;编程笔记


推荐阅读
  • 前言4.1回到基础赋值(略)barfoo[:]copy.deepcopy()等式(略)is条件语句ifelifall()any()4.2序列字符串链表元组序列类型上的操作表4-1P ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • C语言的经典程序有哪些
    本篇内容介绍了“C语言的经典程序有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何 ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
  • 代码如下:#coding:utf-8importstring,os,sysimportnumpyasnpimportmatplotlib.py ... [详细]
  • 必备核心算法神经网络通俗讲解
    深度学习传统算法VS人工智能算法传统算法:都是人为去计算人工智能算法:部分人为需要做的事情交由机器去做【把更多的问题简单化】IT的发展比较高端的就是A ... [详细]
  • 聊聊 中国人工智能科技产业 区域竞争力分析及趋势
    原文链接:聊聊中国人工智能科技产业区域竞争力分析及趋势最近看了一个关于国内AI的报告《中国新一代人工智能科技产业区域竞争力评价指数(2021ÿ ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
author-avatar
飞教书的粉红色
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有