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)


相关推荐

  • c语言字符数组拼接

    c语言字符数组拼接废话不多说,直接上代码#include<stdio.h>#include<string.h>voidmystrcat(chara[],charb[]){inti,j;//计数a[]个数ifor(i=0;i<strlen(a);i++);//这地方比较繁琐,可不写,直接i=strlen…

  • 如何搭建自己的git服务器_git 创建远程仓库

    如何搭建自己的git服务器_git 创建远程仓库GitHub,Gitee想来大家都用过,我们的代码就是托管在这些平台上的。因此,你可能好奇为什么我们不自己大家一个git服务器呢?下面,就开始教大家如何一步步搭建自己的git服务器(试验成功的那一刻还是很让人激动的)。我自己的虚拟机是centOS7的,首先肯定要安装git和git-daemon,可以使用自带的yum进行安装。yuminstall-ygityuminstall-ygit-daemon虚拟机服务端创建git目录[root@ma.

  • 补充排序函数(更快速)

    补充排序函数(更快速)

  • 51单片机按键控制步进电机加减速及正反转

    51单片机按键控制步进电机加减速及正反转之前尝试用单片机控制42步进电机正反转,电机连接导轨实现滑台前进后退,在这里分享一下测试程序及接线图,程序部分参考网上找到的,已经实际测试过,可以实现控制功能。所用硬件:步进电机及驱动器、STC89C52单片机、直流电源1、硬件连接图注意:上图为共阳极接法,实际连接参考总体线路连接。 驱动器信号端定义:PUL+:脉冲信号输入正。(C…

  • Jsp中EL表达式不解析问题

    Jsp中EL表达式不解析问题记一次很郁闷的Bug         前一天晚上写好的JSP页面,然后发布在Tomcat上面之后,一切正常。第二天早上打开之后,发现css样式始终加载不出来,刚开始以为网速问题(前一天晚上测试一切正常,因此排除代码问题),测试网络一切正常,这就跟尴尬了,那css加载不出来是什么意思,难不成遇见鬼了?于是在发布后的页面检查代码,发现页面没有解析EL表达式,找到问题就想办法解决,于是开始折腾,最终还是…

  • Linux 查看环境变量_Linux怎么设置环境变量

    Linux 查看环境变量_Linux怎么设置环境变量各位客官好啊,最近新冠病毒疫情比较严重,还望各位出门时多多防范,一定要带口罩!!!接下来,讲一讲环境变量的相关知识点,既然提到了环境变量,那么我当前的环境里有多少默认的环境变量呢?关于这个问题,我教你两个命令就可以了,并且这两个命令一个比一个牛?先说一说【env】一、用env命令来查看环境变量上图就是我的系统输出的结果,简单给大家介绍几个重点的变量1)HOME:代表用户的家目录,通过cd…

发表回复

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

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