加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Python中正则表达式的奇妙行使 !包你必把握正则!

发布时间:2019-05-22 04:18:19 所属栏目:建站 来源:编程python新视野
导读:媒介 正则表达式就是从字符串中发明纪律,并通过抽象的标记表达出来。打个例如,对付2,5,10,17,26,37这样的数字序列,怎样计较第7个值,必定要先找该序列的纪律,然后用n2+1这个表达式来描写其纪律,进而获得第7个值为50。对付必要匹配的字符串来说,同样
副问题[/!--empirenews.page--]

 媒介

正则表达式就是从字符串中发明纪律,并通过“抽象”的标记表达出来。打个例如,对付2,5,10,17,26,37这样的数字序列,怎样计较第7个值,必定要先找该序列的纪律,然后用n2+1这个表达式来描写其纪律,进而获得第7个值为50。对付必要匹配的字符串来说,同样把发明纪律作为第一步,本文首要行使正则表达式完成字符串的查询匹配、替代匹配和支解匹配。

Python中正则表达式的奇妙行使 !包你必把握正则!

常用的正则标记

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

Python中正则表达式的奇妙行使 !包你必把握正则!

假如读者可以或许较量纯熟地把握上表中的内容,信托在字符串处理赏罚进程中将会游刃有余。如前文所说,本节将基于正则表达式完成字符串的查询、替代和支解操纵,这些操纵都必要导入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的模式指明正则标记.可以匹配恣意字符,包罗换行符 ;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。

拭魅战案例

假如上面的函数和参数寄义都已经把握了,还必要进一步通过案例增强领略,接下来举例声名上面的三个函数:

  1. # 导入用于正则表达式的re模块 
  2. import re 
  3. # 取出字符串string8中全部的气候状态 
  4. 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:'优'}" 
  5. # 基于正则表达式行使findall函数 
  6. print(re.findall("tianqi:'(.*?)'", string8)) 
  7. # 取出string9中全部含O字母的单词 
  8. 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' 
  9. # 基于正则表达式行使findall函数 
  10. print(re.findall('w*ow*',string9, flags = re.I)) 
  11. # 将string10中的标点标记、数字和字母删除 
  12. string10 = '据悉,这次发运的4台蒸汽冷凝罐属于国际热核聚变尝试堆(ITER)项目标核二级压力装备,先后完成了压力试验、真空试验、氦气检漏试验、千斤顶试验、吊耳载荷试验、叠装试验等验收试验。' 
  13. # 基于正则表达式行使sub函数 
  14. print(re.sub('[,。、a-zA-Z0-9()]','',string10)) 
  15. # 将string11中的每个子部门内容支解开 
  16. string11 = '2室2厅 | 101.62平 | 低区/7层 | 朝南  
  17.  上海将来 - 浦东 - 金杨 - 2005年建' 
  18. # 基于正则表达式行使split函数 
  19. split = re.split('[-| 
  20. ]', string11) 
  21. print(split) 
  22. # 支解功效的洗濯 
  23. split_strip = [i.strip() for i in split] 
  24. print(split_strip) 
  25. out: 
  26. ['晴', '阴~小雨', '小雨~中雨', '中雨~小雨'] 
  27. ['Together', 'discovered', 'only', 'to', 'competition', 'Our', 'celebration', 'of'] 
  28. 据悉这次发运的台蒸汽冷凝罐属于国际热核聚变尝试堆项目标核二级压力装备先后完成了压力试验真空试验氦气检漏试验千斤顶试验吊耳载荷试验叠装试验等验收试验 
  29. ['2室2厅 ', ' 101.62平 ', ' 低区/7层 ', ' 朝南 ', ' 上海将来 ', ' 浦东 ', ' 金杨 ', ' 2005年建'] 
  30. ['2室2厅', '101.62平', '低区/7层', '朝南', '上海将来', '浦东', '金杨', '2005年建'] 

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读