应用

1.返回匹配结果 findall&search

1)当有分组时,只将匹配到的字符串里,组的部分放到列表里返回,相当于groups()方法

1.findall
返回所有匹配结果

import re
pattern = re.compile(r'\d+')
pattern.findall("a12b56c54d89") # ['12', '56', '54', '89']pattern = re.compile(r'\d*([0-9])')
pattern.findall("a124b567c54d892")  # ['4', '7', '4', '2'] 只返回了组内的匹配结果pattern = re.compile(r'\d*([0-9])([0-9])')
pattern.findall("a124b567c54d892")  # [('2', '4'), ('6', '7'), ('5', '4'), ('9', '2')] 返回两组组内的匹配结果

2.search返回第一个匹配的结果

3.match从头开始匹配,一般不用再正则表达式用可以用^来限定

切分字符串 split

将字符串按照数字进行切分,普通的split函数只能指定具体某个数字

pattern = re.compile(r'[0-9]')
pattern.split("abc1efg2hij3klm")

替换匹配结果 sub

pattern = re.compile(r'\d+')
pattern.sub('000', '123abc456def') # 000abc000def 将所有的数字替换为0pattern = re.compile(r'\d*(\d)') # 先匹配所有数字
pattern.sub(r'\1','123abc456def') # '3abc6def' 保留数字的个位数,用组内值`\1`代替所有的匹配结果def func(m):return str(int(m.group())*2) # m既match匹配对象
pattern = re.compile(r'\d+')
pattern.sub(func,'123abc456def') # 利用m匹配对象,将匹配到的值翻倍

API

1.便捷方法(不编译方法)

不编译方法 编译方法 描述
re.search(pattern, string, flags=0) pattern.search(string[, pos[, endpos]]) 从指定的pos开始搜索到endpos结束,查找第一个能匹配上pattern的部分,并返回相应的匹配对象。 如果字符串中没有位置与模式匹配,则返回None;
re.match(pattern, string, flags=0) Pattern.match(string[, pos[, endpos]]) 这个函数和search差不多,但是,规定一定要从起始位置就得匹配上,否则就不算匹配成功。
re.fullmatch(pattern, string, flags=0) pattern.fullmatch(string[, pos[, endpos]]) 如果整个字符串匹配此正则表达式,则返回相应的匹配对象。 如果字符串与模式不匹配,则返回None;
re.split(pattern, string, maxsplit=0, flags=0) pattern.split(string, maxsplit=0) 根据表达式规则分拆字符串,返回一个list。
re.findall(pattern, string, flags=0) pattern.findall(string[, pos[, endpos]]) 返回字符串中模式的所有非重叠匹配项,作为字符串列表。
re.finditer(pattern, string, flags=0) pattern.finditer(string[, pos[, endpos]]) 返回一个迭代器
re.sub(pattern, repl, string, count=0, flags=0) pattern.sub(repl, string, count=0) 先通过正则表达式规则找到string中符合规则的部分,然后替换成repl
re.subn(pattern, repl, string, count=0, flags=0) pattern.subn(repl, string, count=0) 不仅返回一个和上面函数一样的字符串,还多返回了一个数字,代表了总共替换的次数

参考|
https://www.jianshu.com/p/147fab022566

实例

条件替换,只去掉数字后面的x

import re
text = "100x text"
re.sub(r'(\d+)[xX]', r'\1', text) # 这个是用了分组的思想,把100x,替换成了100,\1是分组的第一个分组
re.sub('(?<=\d)[xX]', '', s)  # 这个是利用了分组的特殊构建

参考文献:
http://www.runoob.com/python/python-reg-expressions.html
https://www.cnblogs.com/yyyg/p/5498803.html

python regex应用相关推荐

  1. python@regex正则表达式

    文章目录 references 标准文档(library) 补充教程(howTo) 使用python正则表达式 编译正则表达式

  2. python使用正则表达式判别字符串是否以一个大写字符起始而跟随了一些小写字符

    python使用正则表达式判别字符串是否以一个大写字符起始而跟随了一些小写字符 # # Python3 code to find sequences of one upper # case lette ...

  3. python正则表达式模糊匹配_用python正则表达式编译模糊正则表达式

    当我发现python regex模块可以进行模糊匹配时,我感到非常高兴,因为它似乎是解决我许多问题的简单方法. 但是现在我遇到了一个问题,我没有从文档中找到任何答案. 如何使用新的模糊性值功能将字符串 ...

  4. Python的隐藏功能

    Python编程语言鲜为人知但有用的功能是什么? 尝试将答案限于Python核心. 每个答案一个功能. 给出该功能的示例和简短描述,而不仅仅是指向文档的链接. 使用标题作为第一行标记功能. 答案的快速 ...

  5. python装饰器类型错误_有没有办法在继承期间保持装饰器? - python

    我正在尝试使用未实现的方法编写一个抽象类,这将迫使继承的子代在重写该方法(在装饰器中定义)时返回特定类型的值. 当我使用下面显示的代码时,子方法不会调用装饰器.我认为这是因为该方法被重写了,这很有意义 ...

  6. python如何正则匹配浮点值_Python正则表达式字符串数组到浮点数组

    我是python正则表达式的初学者.我达到了我所需要的,但是由于缺少经验,这真的很丑.我的目标是转换以下形式的字符串数组: notes = ["10.0% higher", &qu ...

  7. python中复制n次字符串_Python正则表达式,如何将字符串匹配n次 - python

    我想匹配包含单词100.00%的行,出现3次. 例如 some string 100.00% foo 100.00% 100.00% some string 99.91% foo 100.00% 99 ...

  8. python正则替换查询_使用Python中的正则表达式进行搜索和替换

    我有一个充满推文的日志文件.每条推文都在自己的行上,这样我就可以轻松地遍历文件了. 一个示例推文就像这样: @ sample This is a sample string $1.00 # sampl ...

  9. python关键词提取_如何从Python格式字符串中提取关键字? - python

    我想在API中提供自动字符串格式,例如: my_api("path/to/{self.category}/{self.name}", ...) 可以替换为格式化字符串中标注的属性值 ...

最新文章

  1. hdu 5903 Square Distance
  2. 解决 iOS 12.4 Killed: 9 的问题
  3. centos7 安装python3
  4. 扒一扒那些年我们遇到的奇葩代码
  5. warning: expression result unuesd 可能原因是函数忘了加括号,
  6. 作者:石磊,男,北京金信网银金融信息服务有限公司互联网金融行业数据分析师。...
  7. qml入门学习(六):Component组件
  8. qt可以导入3d吗_3D全息投影技术可以用在教育行业吗?
  9. 李华上大学了吗?(I)
  10. 网易你收集用户身份证扫描件意欲何为——隄防维权背后的个人信息安全陷阱
  11. Verilog HDL的简单应用之74ls138功能的实现
  12. 从Altium官方网站下载库文件
  13. MATLAB中print函数使用
  14. [Unity][NGUI]Sprite精灵的Type九宫格切割Sliced没效果
  15. 香港希玛眼科集团第二届眼科精准医疗国际会议在京启幕
  16. 计算机里FC方式,谁知道头文字D里提到的FD,FR,FC,FF指的是什么驱动方式的车?...
  17. java获取经纬度和地址等工具类
  18. 网络游戏软件销售渠道模式举例及分析
  19. 2018年小米 Mi air i7-7500u黑苹果efi引导文件
  20. 北京公共自行车租赁方法_百度知道

热门文章

  1. 为什么要预留字段_PaperYY为什么会免费论文查重?
  2. Python3.6下安装扩展库pywin32的正确姿势
  3. java 反射基础_Java基础教程:反射基础
  4. 2d shader unity 阴影_UNITY崩坏3角色渲染实践
  5. 计算机如何模拟人类说话,七十、计算机如何模拟痛觉
  6. 简述arm汇编和c语言混合编程,ARM汇编C语言混合编程
  7. vbs把excel文件另存为html,VBS实现将Excel表格保存为txt文本
  8. c语言数组与函数,C语言的数组与函数
  9. python ssh模块stdout.read 和recv_paramiko SSH 模块简单应用。
  10. tcpip网络编程 尹圣雨源码_网络编程——学习笔记