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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java json序列化日期类型[通俗易懂]

    java json序列化日期类型[通俗易懂]做接口开发时经常需要给前端返回日期数据,比如生日、创建时间、更新时间等。我们一般是建一个bean,将定义所需要的字段,并和数据库的字段相对应。虽然数据库的字段是日期类型的,但bean的字段定义在String就行了,看下面的测试代码:packagecom.bs.test;importjava.text.SimpleDateFormat;importjava.util.Date;importc

    2025年6月9日
    4
  • pycharm svn设置_新手配置交换机详细教程

    pycharm svn设置_新手配置交换机详细教程1.打开pycharm设置配置svn.exe的地址Seting-versioncontrol-subversion按照红色填入svn.exe的路径2.在配置的时候找不到svn.exe的方法原因是在默认安装svn的时候忽略了安装svn.exe2.1在卸载或更改程序中重新安装一下svn2.2按照图片进行操作完成后需要重新打开pycharm设置,就可以找到svn.exe3.配置自动化脚本svn的地址导出的时候可以选择放置的位置如D盘4.注意事项pycharm的使用和本地使用没有太

    2022年8月25日
    6
  • 创新与项目管理_创新与创业管理

    创新与项目管理_创新与创业管理值此新商业时代,作为组织内保证所有项目成功交付,支撑组织战略目标实现的PMO,在现代企业管理和商业运作中将扮演着十分重要的角色。现阶段,虽然PMO随着项目管理的普及和深入应用,已经成为组织项目管理发展的新趋势,但是它在迎来新的发展机遇的同时也面临着不小的挑战,其PMO管理能力与水平的高低将决定它自身在支撑组织战略中的价值程度。为进一步加强PMO人士之间的广泛交流,分享成功的PMO运作实践,促进…

    2022年8月31日
    5
  • WPA2协议新攻击方法(KRACK)—WPA2密钥重安装漏洞[通俗易懂]

    WPA2协议新攻击方法(KRACK)—WPA2密钥重安装漏洞[通俗易懂]KeyReinstallationAttacksBreakingWPA2byforcingnoncereuse今年9月份CCS公布了一篇新论文,该论文提出了一种新的攻击方法:KeyReinstallationAttacks,这种攻击方法对WPA2危害甚大。本文简单介绍该攻击方法。我们都知道所有WiFi网络都是靠WiFiProtectedAccess协议的某个实现版

    2022年6月10日
    43
  • ELK

    ELK

    2021年5月28日
    100
  • 用户登录界面[通俗易懂]

    用户登录界面[通俗易懂]publicclassLoginIn{privateStringname;privateStringpassword;publicLoginIn(Stringname,Stri

    2022年8月6日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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