转自:微点阅读(www.weidianyuedu.com)微点阅读 - 范文大全 - 免费学习知识的网站

导语

正则表达式就是从字符串中发现规律,并通过“抽象”的符号表达出来。打个比方,对于2,5,10,17,26,37这样的数字序列,如何计算第7个值,肯定要先找该序列的规律,然后用n2+1这个表达式来描述其规律,进而得到第7个值为50。对于需要匹配的字符串来说,同样把发现规律作为第一步,本文主要使用正则表达式完成字符串的查询匹配、替换匹配和分割匹配。

常用的正则符号

在进入字符串的匹配之前,先来了解一下都有哪些常用的正则符号,见下表所示:

如果读者能够比较熟练地掌握上表中的内容,相信在字符串处理过程中将会游刃有余。如前文所说,本节将基于正则表达式完成字符串的查询、替换和分割操作,这些操作都需要导入re模块,并使用如下介绍的几个函数。

字符串的匹配查询

re模块中的findall函数可以对指定的字符串进行遍历匹配,获取字符串中所有匹配的子串,并返回一个列表结果。该函数的参数含义如下:

findall(pattern, string, flags=0)pattern:指定需要匹配的正则表达式。string:指定待处理的字符串。flags:指定匹配模式,常用的值可以是re.I、re.M、re.S和re.X。re.I的模式是让正则表达式对大小写不敏感;re.M的模式是让正则表达式可以多行匹配;re.S的模式指明正则符号.可以匹配任意字符,包括换行符\n;re.X模式允许正则表达式可以写得更加详细,如多行表示、忽略空白字符、加入注释等。

字符串的匹配替换

re模块中的sub函数的功能是替换,类似于字符串的replace方法,该函数根据正则表达式把满足匹配的内容替换为repl。该函数的参数含义如下:sub(pattern, repl, string, count=0, flags=0)pattern:同findall函数中的pattern。repl:指定替换成的新值。string:同findall函数中的string。count:用于指定最多替换的次数,默认为全部替换。flags:同findall函数中的flags。

字符串的匹配分割

re模块中的split函数是将字符串按照指定的正则表达式分隔开,类似于字符串的split方法。该函数的具体参数含义如下:split(pattern, string, maxsplit=0, flags=0)pattern:同findall函数中的pattern。maxsplit:用于指定最大分割次数,默认为全部分割。string:同findall函数中的string。flags:同findall函数中的flags。

实战案例

如果上面的函数和参数含义都已经掌握了,还需要进一步通过案例加强理解,接下来举例说明上面的三个函数:

# 导入用于正则表达式的re模块import re# 取出字符串string8中所有的天气状态string8 = "{ymd:"2018-01-01",tianqi:"晴",aqiInfo:"轻度污染"},{ymd:"2018-01-02",tianqi:"阴~小雨",aqiInfo:"优"},{ymd:"2018-01-03",tianqi:"小雨~中雨",aqiInfo:"优"},{ymd:"2018-01-04",tianqi:"中雨~小雨",aqiInfo:"优"}"# 基于正则表达式使用findall函数print(re.findall("tianqi:"(.*?)"", string8))# 取出string9中所有含O字母的单词string9  = "Together, we discovered that a free market only thrives when there are rules to ensure competition and fair play, Our celebration of initiative and enterprise"# 基于正则表达式使用findall函数print(re.findall("\w*o\w*",string9, flags = re.I))# 将string10中的标点符号、数字和字母删除string10 = "据悉,这次发运的4台蒸汽冷凝罐属于国际热核聚变实验堆(ITER)项目的核二级压力设备,先后完成了压力试验、真空试验、氦气检漏试验、千斤顶试验、吊耳载荷试验、叠装试验等验收试验。"# 基于正则表达式使用sub函数print(re.sub("[,。、a-zA-Z0-9()]","",string10))# 将string11中的每个子部分内容分割开string11 = "2室2厅 | 101.62平 | 低区/7层 | 朝南 \n 上海未来 - 浦东 - 金杨 - 2005年建"# 基于正则表达式使用split函数split = re.split("[-\|\n]", string11)print(split)# 分割结果的清洗split_strip = [i.strip() for i in split]print(split_strip)out:["晴", "阴~小雨", "小雨~中雨", "中雨~小雨"]["Together", "discovered", "only", "to", "competition", "Our", "celebration", "of"]据悉这次发运的台蒸汽冷凝罐属于国际热核聚变实验堆项目的核二级压力设备先后完成了压力试验真空试验氦气检漏试验千斤顶试验吊耳载荷试验叠装试验等验收试验["2室2厅 ", " 101.62平 ", " 低区/7层 ", " 朝南 ", " 上海未来 ", " 浦东 ", " 金杨 ", " 2005年建"]["2室2厅", "101.62平", "低区/7层", "朝南", "上海未来", "浦东", "金杨", "2005年建"]

如上结果所示,在第一个例子中通过正则表达式"tianqi:"(.*?)""实现目标数据的获取,如果不使用括号的话,就会产生类似"tianqi:"晴"", "tianqi:"阴~小雨""这样的值,所以,加上括号就是为了分组,且仅返回组中的内容;

第二个例子并没有将正则表达式写入圆括号,如果写上圆括号也是返回一样的结果,所以findall就是用来返回满足匹配条件的列表值,如果有括号,就仅返回括号内的匹配值;

第三个例子使用替换的方法,将所有的标点符号换为空字符,进而实现删除的效果;

第四个例子是对字符串的分割,如果直接按照正则 "[,。、a-zA-Z0-9()]" 分割的话,返回的结果中包含空字符,如 "2室2厅" 后面就有一个空字符。为了删除列表中每个元素的首尾空字符,使用了列表表达式,并且结合字符串的strip方法完成空字符的压缩。

Python中正则表达式的妙用。相关推荐

  1. Python中正则表达式用法 重点格式以这个为准_首看_各种问题

    20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...

  2. python中正则表达式_Python中正则表达式详解

    正则表达式是用来简洁表达一组字符串的表达式,本文主要和大家分享Python 中正则表达式知识详解,希望能帮助到大家.操作符说明实例.表示任何单个字符 [ ]字符集,单个字符取值范围[abc]表示a或b ...

  3. python中正则表达式的简单应用_Python正则表达式详细应用

    原文地址:http://www.jb51.net/article/65286.htm 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合, ...

  4. 站长在线Python精讲:Python中正则表达式的语法详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<Python中正则表达式的语法详解>.本知识点主要内容有9点:行定位符.元字符.限定符.字符集.排除字符.选择字符.转义字符 ...

  5. 第五章 python中正则表达式的使用

    第一节    正则表达式的一些介绍 1)掌握正则表达式的案例 2)写一个小爬虫 3)正则表达式(或RE)是一个小型的.高度专业化的编程语言,(在python中)它内嵌在python中,并通过re模块实 ...

  6. python正则表达式中的转义字符_详解python中正则表达式的反斜线的转义功能

    最近深入研读了正则表达式的一本经典著作,对于在python中使用正则表达式时使用反斜线转义功能时有些心得,特与大家分享. 核心思想:在python中使用正则表达式时要切记反斜线具有两层转义功能,如果你 ...

  7. Python中正则表达式讲解

    正则表达式是匹配字符串的强大武器,它的核心思想是给字符串定义规则,凡是符合规则的字符串就是匹配了,否则就是不合法的.在介绍Python的用法之前,我们先讲解一下正则表达式的规则,然后再介绍在Pytho ...

  8. python中正则表达式的默认匹配方式为_Python模式匹配与正则表达式

    1.1 不用正则表达式来匹配文本 假设我希望在一个字符串中找到电话号码,电话号码的格式为三个数字,一个短横线,四个数字,一个短横线,四个数字 比如:131-3310-5293和132-2670-986 ...

  9. 常用正则表达式锦集与Python中正则表达式的用法

    1.常用正则表达式 最简单的正则表达式是普通字符串,只能匹配自身 '[pjc]ython'可以匹配'python'.'jython'.'cython' '[a-zA-Z0-9]'可以匹配一个任意大小写 ...

最新文章

  1. 家用电器用户行为分析与事件识别_用户行为分析系统
  2. 线下门店场景化互动类产品浅析
  3. 无BOM禁止转生产订单
  4. 在实际项目中如何应用门面模式(Facade)
  5. quart动态执行定时任务
  6. C - Insertion Sort Gym - 101955C
  7. [js] 你有使用过pjax吗?它的原理是什么?
  8. android gravity参数,Gravity - [ Android中文手册 ] - 在线原生手册 - php中文网
  9. Python | 使用+ =运算符在字符串末尾附加文本
  10. ubuntu kylin mysql_Ubuntu16.04下Kylin的安装与配置
  11. iOS下浏览器document/body的click事件无效的坑
  12. 16个精美的 HTML5 作品集网站设计案例
  13. 《美国工厂》:一座中国工厂在数万英里之外的异域镜像
  14. html什么是一级标题,一级标题是什么(论文一二三级标题范本)
  15. Linux系统监视与进程管理
  16. 【网络工程】二层与三层交换机都知道 那么四层交换机是什么?
  17. SQL查询语句练习(一)
  18. 石墨笔记,幕布和 Effie 哪个更适合公众号主?
  19. 共享三年嵌入式项目资料(源码+实物图+原创)(申精帖)
  20. RISC-V SiFiveU64内核——L2 Prefetcher预期器

热门文章

  1. 全境封锁显示服务器错误,全境封锁怎么切换服务器_全境封锁切换服务器方法_飞翔教程...
  2. matlab在杨氏单缝,基于matlab的单缝衍射和双缝干涉可视化模拟(毕业学术论文设计).doc...
  3. 数据分析成果落地难?你需要注意这五个问题
  4. 家园卫士服务器维护2021,家园卫士礼包码2021大全 官方最新礼包兑换码总汇[多图]...
  5. 有趣的数学 依靠想象力的微积分
  6. 我理解的信息论——自信息、熵、互信息
  7. 广州佰新视觉:UI设计收入大概多少?
  8. Apriori算法详解与实现
  9. 从键盘输入一些字符把他们送到磁盘,直到输入#为止
  10. ZXing生成二维码、读取二维码