day23 Pythonpython 本文re模块

day23 Pythonpython 本文re模块

re模块用于对python的正则表达式的操作。

字符:

  . 匹配除换行符以外的任意字符
  \w 匹配字母或数字或下划线或汉字
  \s 匹配任意的空白符
  \d 匹配数字
  \b 匹配单词的开始或结束
  ^ 匹配字符串的开始
  $ 匹配字符串的结束

次数:

   * 重复零次或更多次
  + 重复一次或更多次
  ? 重复零次或一次
  {n} 重复n次
  {n,} 重复n次或更多次
  {n,m} 重复n到m次

一、普通字符:

.     通配符一个.只匹配一个字符

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("a..d","avsdcabcd"))

结果:
['abcd']
['avsd', 'abcd']

 ^    以什么开头

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("^avd","avddddcaavddbcd"))

结果:
['abcd']
['avd']

 $  以什么结尾

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd$","avddddcaavddbcavd"))

结果:
['abcd']
['avd']

 *  代表匹配*前面的字符 重复0到无穷次

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd*","avddddcaavddbcavavd"))

结果:
['abcd']
['avdddd', 'avdd', 'av', 'avd']

 +  代表匹配+前面的字符 重复1到无穷次

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd+","avddddcaavddbcavavd"))

结果:
['abcd']
['avdddd', 'avdd', 'avd']

*和+属于贪婪匹配

? 代表匹配?前面的字符的0次或者是1次

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd?","avddddcaavddbcavavd"))

结果:
['abcd']
['avd', 'avd', 'av', 'avd'] 

{}可以指定重复几次

{0,} 代表重复{}前面字符的0到无穷次,相当于*

{1,} 代表重复{}前面字符的1到无穷次,相当于+

{0,1}代表重复{}前面字符的0到1次,相当于?

{6}代表重复{}前面字符的6次

{1,3}代表重复{}前面字符的1次到3次 

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd{3}","avddddcaavddbcavavd"))

print(re.findall("avd{3}","avddddcaavddbcavavd"))
print(re.findall("avd{2,4}","avddddcaavddbcavavd"))
print(re.findall("avd{0}","avddddcaavddbcavavd"))
print(re.findall("avd{7}","avddddcaavddbcavavd"))

结果:
['abcd']
['avddd']
['avddd']
['avdddd', 'avdd']
['av', 'av', 'av', 'av']
[]

 惰性匹配*?  只要匹配出*前面的字符的0次就不匹配了

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd*?","avddddcaavddbcavavd"))

结果:
['abcd']
['av', 'av', 'av', 'av']

 惰性匹配+?  只要匹配出+前面的字符的1次就不匹配了

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd+?","avddddcaavddbcavavd"))

结果:
['abcd']
['avd', 'avd', 'avd']

 二、字符集

1、或的功能

import re
print(re.findall("x[yz]","xyzzzxyzxssdzx"))
print(re.findall("x[yz]","xyzzzxzsdxzzy"))
print(re.findall("x[yz]p","xypzzzxzsdxzpzy"))

结果:
['xy', 'xy']
['xy', 'xz', 'xz']
['xyp', 'xzp']

 2、[]中得特殊符号-  匹配字母

取小写字符

import re
print(re.findall("[a-z]","as32eer45ttt564"))

结果:
['a', 's', 'e', 'e', 'r', 't', 't', 't']

 取大写字

import re
print(re.findall("[A-Z]","as32eADCrc45ttDWSDS564"))

结果:
['A', 'D', 'C', 'D', 'W', 'S', 'D', 'S']

 取大小写字母

import re
print(re.findall("[a-zA-Z]","as32eADCrc45ttDWSDS564"))

结果:
['a', 's', 'e', 'A', 'D', 'C', 'r', 'c', 't', 't', 'D', 'W', 'S', 'D', 'S']

 取DC后面跟一个字母 取ab后面跟0个或者1 个字母

import re
print(re.findall("DC[a-z]?","as32eADCrc45ttDCWSDS564"))

结果:
['DCr', 'DC']

3、[]里面的特殊符号^   是取反的意思

4、[]里面的特殊符号\    叫转义符  最牛的一个斜杠

\d   匹配任意十进制数,相当于[0-9]

\D   匹配任意非数字字符,相当于[^0-9]

\s   匹配任何空白字符

\S   匹配任何非空白字符

\w   匹配任何字符数字字符,相当于[a-zA-Z0-9_]

\W   匹配任何非字母数字字符,相当于[^a-zA-Z0-9_]

\b   匹配一个特殊字符边界,比如空格 & # 等

未完待续。。。。。

转载于:https://www.cnblogs.com/charon2/p/10406736.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101108.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java开发常用四大框架_大牛经验!常用的5款Java框架汇总[通俗易懂]

    java开发常用四大框架_大牛经验!常用的5款Java框架汇总[通俗易懂]Java框架在Java开发中的作用是毋庸置疑的。那么Java常用框架有哪些?大概包括:Hibernate、Spring、Struts、jQuery、Redis五种。这些框架有什么用呢?Java常用框架提供了一些现成的机制,在团队开发中简化开发难度。下面就来具体介绍一下Java常用的五大框架。1、HibernateHIbernate是一个优秀的持久化框架,负责简化将对象数据保存到数据库中,或从数据库…

  • softmax函数导数「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。

  • 《Storm企业级应用:实战、运维和调优》——1.3 Storm核心组件[通俗易懂]

    《Storm企业级应用:实战、运维和调优》——1.3 Storm核心组件

  • curd php,laravel通用化的CURD的实现

    curd php,laravel通用化的CURD的实现说明非常高效的处理laravel中curd的操作安装composerrequireshencongcong/laravel-curd~1.0laravel项目的config/app.php注册ServiceProvider’providers’=>[//…Shencongcong\LaravelCurd\LaravelCurdServiceProvider::class…

    2022年10月31日
  • 数据库设计中的概念,逻辑,物理结构设计辨析法_什么叫做逻辑

    数据库设计中的概念,逻辑,物理结构设计辨析法_什么叫做逻辑对于初学者来说,数据库设计中的概念、逻辑、物理结构设计三者更像是孪生兄弟,分不清他们各自是谁,主要有什么作用。偶然间查阅文献,看到一篇期刊中表述比较规范,特用相对容易理解的语言辨析三者关系,并借用期刊中的规范示意图仅供学习交流(期刊出处见参考文献,如有侵权,请联系删除)。数据库设计应该是概念结构设计(E-R图),逻辑结构设计(关系模式),物理结构设计(数据表,设计字段)三者共同组成的。概念结构设计依据对于现实世界的关系的调研、了解、分析而后得到的实体对象有哪些,对象有哪些特征,它们之间的关系是1对1

  • 新手必备webstorm安装教程

    新手必备webstorm安装教程接下来我们看一下webstorm的安装1.首先下载webstrom安装包这个安装包在网上很好找点击.exe文件激活成功教程为长期有效的webstrom/IDEAlicenseserver20181.复制下方activationcode,直接粘贴在webstorm的activationcode栏上,切记先不要点ok,切记先不要点ok,切记先不要点ok,等第二步执行完…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号