Python之路,Day14 = Python基础14

 compile()
match()
search()
findall() m.group() # 括号里面剋跟参数,表示打印里面(分组)的第几个元素(索引从1开始) 需要测试下 a = re.compile(r'abc') # 制作匹配规则
a.search('abcdefghijk') # a是一个对象 match # 从第一个开始匹配
findall # 找出所有符合规则的
search # 从前往后开始寻找 元字符
. # 除换行符的任意字符
\ # 转义字符
# re 模块是 python 调用的一个 小型语言,如果 规则里面有 \\ 的话,
# python 解释器在读取的时候,就会先把它转成 \ 去掉特殊意义,
# 但是 re 里面还是需要转化 \ 的特殊意义,所以,需要 \\\\ 来使用
# 经过 python 的时候,变成了 \\, 到 re 里面,就变成了 \;
[...] # 字符集合 \d # 数字[0-9]
\D # 非数字[^0-9]
\s # 空白字符[<空格>\t\r\n\f\n]
\S # 非空白字符[^\s]
\w # 单字字符[A-Za-z0-9]
\W # 非单词字符[^\w] 数量词字符
* # 匹配前0个字符1次或者多次
+ # 匹配前一个字符1次或者多次
? # 匹配前一个字符0次或者1次
{m} # 匹配前一个字符m次
{m,n} # 匹配前一个字符m至n次
数量词?# 变成非贪婪模式(默认为贪婪模式,尽可能的匹配多的次数) ^
'^[abc]' # 以a或b或c开头的
'[^abc]' # 非a、b、c 边界字符
^ # 匹配字符串开头,多行匹配每一行开头
'^[abc]' # 以a或b或c开头的
'[^abc]' # 非a、b、c $ # 匹配字符串末尾,多行匹配每一行末尾
\A # 仅匹配字符串开头,注意转义字符
\Z # 仅匹配字符串末尾,注意转义字符
\b # 匹配\w和\W之间,注意转义字符 逻辑、分组
| # 或
ret = findall("www\.(?:\w+)\.(?:com|cn)")
# findall 默认只显示 分组的信息(括号里面的), 加了 ?: 那么就取消优先级啊(打印所有)
# | 两个要用 括号 括起来 (...) # 匿名分组
a = re.compile('(a)b(c)')
a.match('abcdefg')
a.groups() # 分组匹配。会打印出一个元组,符合规则a的为第一个元素,符合规则c的为第二个元素,如果后面的规则也有括号的话,依次变为元素 (?P<name>...) # 除了分组外还替该组制定一个 name 的别名
p = re.compile('(?P<name>a)b(c)')
a = p.match('abcdef')
a.group('name') # 可以把这个对应的元素取出来
a.groups()
a.groupdict() \<number> # 引入编号为<number>的分组匹配到的字符串
p = re.compile(r'(?<name>a)b(c)\1') # 注意 1 前面的 \ ,不加 r ,会被当成转义字符,可以写两个 \
# \1 像当与在这个位置引用了前面第一个的那个规则(分组里面的第一个),同样,不会被写入到分组中
p.match('abcdef')
a.groups()
a.groupdict() (?P=name) # 引用别名为<name>的分组匹配到的字符串
p = re.compile('(?<name>a)b(c)(?P=name)')
# (?P=name) 相当于在这个位置引用了前面那个 名字叫 name 的这个规则,虽然这里有括号,但是它只会匹配到,不会放入分组中
p.match('abcdef')
a.groups()
a.groupdict() 特殊构造
(?:...) # (...) 不分组版本,虽然在括号里面,但是不进行分组
(?#...) # #号后面的内容将作为注释
(?=...) # 后面的限定词满足 ... 条件
re.compile(r'a(?=\d)') # 匹配前面是a,后面是数字的内容,得到的结果显示出a,不显示后面的数字
(?!...) # 后面的限定词不满足 ... 条件
(?<=...) # 前面的限定词满足 ... 条件
(?<!...) # 前面的限定词不满足 ... 条件
(?(id/name) yes |no) #
# re.compile(r'(\d)?abc(?(1)\d|abc)')
# 匹配规则为 (\d)?abc ,有分组;
# (?(1)\d|abc) 前面 分组里面位置为 1 的规则,可以是数字,也可以是 abcdef 正则表达式开关
忽略大小写:
可以写成:re.compile(r'(?i)abc')
开关模式:re.compile(r'abc', re.I) # 推荐 sub
p = re.compile(r'(\w) (\w)')
s = 'hi you, good boy'
print(p.sub(r'\2 \1', s)
>>> you hi, boy good

day26 re正则表达式的更多相关文章

  1. CRM项目之RBAC权限组件-day26

    写在前面 上课第26天,打卡: 世间安得双全法 不负如来不负卿 s17day26 CRM项目 项目概要:XX公司CRM - 权限管理,公共组件,app ***** - 熟悉增删改查,Low *** - ...

  2. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  3. Python高手之路【五】python基础之正则表达式

    下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...

  4. C# 正则表达式大全

    文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...

  5. C#基础篇 - 正则表达式入门

    1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...

  6. JavaScript正则表达式,你真的知道?

    一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...

  7. Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  8. 【JS基础】正则表达式

    正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...

  9. JavaScript 正则表达式语法

    定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...

随机推荐

  1. 如果通过cookies和localStorage取值?

    1. getCook : 设定setCookie值 let setCookie = setCookie('wan',data,7); function setCookie(c_name,value,e ...

  2. sqlserver 如何瞬间执行上万条数据

    核心的内容是:使用自定义表类型 第一步:创建存储过程P_T1DeclareInfo_Upload_new 参数: T1DeclareInfo_UploadPNSN_Param  类型 T1Declar ...

  3. redis List相关命令

  4. Linux fork创建子进程

    1.  pid_t fork(void); 功能:创建父子进程 参数:无 返回值:成功:在父进程中:返回值为子进程的PID 在子进程中:返回值为0 失败:-1 注意: 1)fork函数是用来创建进程的 ...

  5. Peasy.NET学习之并发问题处理

    Peasy.net之并发处理 BusinessServiceBase是ServiceBase的自定义实现,提供了额外的独特功能 首先,创建一个业务服务,该业务服务必须继承BusinessService ...

  6. Tools: CGAL 安装指南

    环境:Microsoft Win7 SP1 Visual Studio 2015 SP3 参考: https://blog.csdn.net/milkpku/article/details/50241 ...

  7. java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoa

    最近运行ssm项目遇到tomcat启动报错: 解决办法,右击项目选择properties 在Deployment Assembly  add 选择maven dedependencies 项目成功运行 ...

  8. SpringBoot 之 Mybatis 逆向工程

    今天给大家介绍在 spring- boot 项目中如何使用 maven 插件逆向工程生成 Mybatis 代码. pom.xml 添加依赖和插件 <dependency> <grou ...

  9. python 打印出水仙花数

    打印出三位水仙花数方法及解释 num = 100while num <= 999: #这里num 小于等于999 则运行 填1000也可以 a = num % 10 #num对10取余 b = ...

  10. php fopen用法以及解释

    $log = fopen('./log.txt','a');//生成一个log.txt文件,a相当于文件的权限 fwrite($log,'成功'."\r\n");//写入文件 mo ...