正则体系1

https://edu.51cto.com/center/course/lesson/index?id=344062

 

 

 

正则课程介绍

 

Match tracer  验证正则

 

 

 

文档

工具字典

 

 

语法界面

 

 

 

 

 

字符类 普通 所见即所得

 

 

 

中括号 字符范围

 

 

 

 

高亮表示匹配到了

 

 

只能匹配a到c

中括号里面的任意一个

 

 

^是管整个方括号里面的东西

 

后面跟上at

 

 

正则 上一次匹配的结束是下一次匹配的开始  重点

 

 

第二次从f开始匹配

 

 

第二次从a开始匹配  匹配不到 然后从t开始匹配

 

 

 

匹配除了a到d 的任意一个字符

 

 

 

圆括号里面的内容是一个整体    竖线  或的意思

 

 

分组里面匹配多个重复字符

 

 

 

 

 

预定义字符类

 

 

 

 

 

每一行结束都有一个换行符

 

 

换行符的匹配

换行符 空白  肉眼看不见

 

 

匹配所有字符

 

 

 

 

 

字母数字下划线

 

\W 除了字母 数字 下划线

 

 

 

量词 贪婪  勉强  侵占

 

 

 

量词模式

 

 

X 表示正则表达式

 

量词尽量多的匹配字符串

默认都是贪婪模式:尽量多的匹配目标串

 

 

 

 

 

单独的时候是匹配一个分号 但是加上后面的\d之后就匹配到了两个分号

问题

 

 

匹配了两个而不是三个

量词种类

 

勉强在贪婪模式上面加了个问号  每一项都是

侵占就是在贪婪模式的后面加了一个加号

 

贪婪:尽可能多的匹配 且能够回退?

勉强:尽量少的匹配目标串  但不是不匹配 有就匹配

侵占:尽量多的匹配目标串且不回退

 

 

 

贪婪 勉强  侵占 详解

 

 

 

 

回退  第二次匹配的时候 只有一个a了 不够了  但是可以回退  之前匹配过的一次a

再第二次匹配的时候也参与了  回退

 

前面一个a都不匹配

整个表达式 匹配一个a

匹配三次

 

 

每次匹配两次  只能匹配一次

 

 

 

 

一个一个往后吐  吐出第一个的时候   表达式就能拿到匹配了

 

一次匹配

 

 

 

没次匹配一个a

 

 

 

匹配不到

 

 

 

 

一次匹配

 

 

 

只能匹配一次 勉强不能回退

 

 

 

匹配不到

 

 

 

 

两次匹配 不回退吗

 

回退对大括号无效?

 

 

一次匹配

 

 

 

匹配一次  吐一个a

吐一个a  把后边的a 加入

 

 

一次匹配  这里为什么不回退了?

回退是指多匹配的吐出来 补充后面的,而不是前面的去掉一部分 和后面的一起匹配

 

 

不匹配

 

不回退

 

 

贪婪 勉强  侵占实例讲解

 

 

 

 

 

尽可能多的匹配  那就就会去匹配 第二个foo

第一个foo 就匹配不到了

首先吐出一个o 再吐一个o 最后吐个f 就可以匹配了

 

 

 

一次匹配

 

 

第二次匹配的过程

 

 

两次匹配

 

 

首先匹配所有的字符  因为不回退  所以一次都匹配不上

 

 

 

 

 

刚开始匹配  到美元符号之前的所有  然后吐字符 到小写的d

 

 

 

一次匹配

 

 

 

刚开始匹配2 但后面不是字母 所有不行 继续  直到上面

第一次匹配

 

 

 

 

第二次匹配

 

 

第三次

 

 

这里开始就不行了

 

 

 

3次匹配

 

 

一次都不能匹配

 

 

 

 

 

捕获组

 

 

 

把取出的数字都放在分组里面  小括号里面

 

 

 

 

 

 

分组匹配到的内容

 

 

高亮

 

 

 

 

代码例子

 

 

两次匹配

反向引用

 

 

编号方式

从左到右 从外到里进行编号

 

最外面是第一个分组 0 整个表达式

 

 

 

 

反向引用

 

 

 

 

 

匹配两个数字

 

是对整匹配结果的替换 不能只替换其中一部分? 错 应该是可以的 先拿出分组 在替换需要替换的部分

 

前面括号里的内容再出现一次

 

 

 

 

 

 

 

搞不懂

问题

 

 

非捕获组  零断言表达式

 

 

 

 

 

 

 

每次都有一个分组

 

 

 

没有子分组了  只留下全部匹配  分组匹配就不要了

 

零宽度断言

 

 

正向肯定预查  一般放到表达式的结尾

 

 

 

 

 

正向否定预查  放在表达式的开头

 

 

 

反向肯定预查

 

 

 

反向否定预查

 

零宽度断言

 

 

56后面必须跟上9

 

 

前面不能是4

 

 

 

零宽度断言 不匹配内容 只匹配中间的内容

 

也不计算在分组里面

 

 

 

把前面和后面变成零宽度断言  主要中间的部分

 

 

 

 

 

 

 

反向在前面

正向在后面

 

 

 

 

 

模式修正符

 

 

 

 

修正正则表达式 sigmex

 

 

 

前面搭配后面的字母

搭配i忽略大小写

 

 

 

 

 

 

 

 

 

A 忽略大小写 b 只能是小写

 

 

 

 

 

边界匹配器

 

 

 

 

 

让正则匹配更加精准

 

 

 

行首

行尾

和单词首

单词尾

 

 

 

一般是空格

 

 

 

 

Same 结尾

 

 

 

 

总结和实例讲解

 

 

 

Js 里面的用法  斜线开头

 

 

 

s出现可以 不出现也可以

 

 

 

 

和两边的斜杠是冲突的

 

问号和其他字符组合放在括号的开头的时候要注意其特殊的用法

 

 

 

 

 

这里\W 本来就是特殊含义 不需要转义成其真正含义

 

 

Url 带参数

网上的正则不一定是想要的

 

 

 

 

正则匹配:

分类 进行匹配

 

 

 

三个都写到或者里面其会匹配最大的

 

aa='资中县双河街道办事处'

comp=re.compile(r'(街道办事处|街道|处)')

res=comp.findall(aa)

 

把最长的写在最前面

 

数字中间不能用横杠

 

 

正则只适合于匹配 有规则的 且中间无其他干扰的情况的识别

 

四川自治区内江市资中县双河街道办事处安木店村7单元12号

 

地址这种东西感觉不能用正则匹配出来   不管是贪婪,勉强还是侵占都无法实现 多个分组 并且中间穿插了其他字符的情况

 

固定的800多种组合是可以实现的

 

 

 

固定一种规则是可以的  中间没有问号  但是开始位置还是无法确定

 

上面区的情况 和园的情况 都可以长的部分放到前面去解决

 

 

这种和其他混淆度太高  直接不用其作为判断标准  删除好了

 

 

 

 

 

 

 

https://edu.51cto.com/center/course/lesson/index?id=344062

 

 

 

正则课程介绍

 

Match tracer  验证正则

 

 

 

文档

工具字典

 

 

语法界面

 

 

 

 

 

字符类 普通 所见即所得

 

 

 

中括号 字符范围

 

 

 

 

高亮表示匹配到了

 

 

只能匹配a到c

中括号里面的任意一个

 

 

^是管整个方括号里面的东西

 

后面跟上at

 

 

正则 上一次匹配的结束是下一次匹配的开始  重点

 

 

第二次从f开始匹配

 

 

第二次从a开始匹配  匹配不到 然后从t开始匹配

 

 

 

匹配除了a到d 的任意一个字符

 

 

 

圆括号里面的内容是一个整体    竖线  或的意思

 

 

分组里面匹配多个重复字符

 

 

 

 

 

预定义字符类

 

 

 

 

 

每一行结束都有一个换行符

 

 

换行符的匹配

换行符 空白  肉眼看不见

 

 

匹配所有字符

 

 

 

 

 

字母数字下划线

 

\W 除了字母 数字 下划线

 

 

 

量词 贪婪  勉强  侵占

 

 

 

量词模式

 

 

X 表示正则表达式

 

量词尽量多的匹配字符串

https://www.cnblogs.com/kevin-yuan/archive/2012/09/02/2667428.html

贪婪 勉强 侵占

默认都是贪婪模式:尽量多的匹配目标串

 

 

 

 

 

单独的时候是匹配一个分号 但是加上后面的\d之后就匹配到了两个分号

问题

 

 

匹配了两个而不是三个

量词种类

 

勉强在贪婪模式上面加了个问号  每一项都是

侵占就是在贪婪模式的后面加了一个加号

 

贪婪:尽可能多的匹配 且能够回退?

勉强:尽量少的匹配目标串  但不是不匹配 有就匹配

侵占:尽量多的匹配目标串且不回退

 

 

 

贪婪 勉强  侵占 详解

 

 

 

 

回退  第二次匹配的时候 只有一个a了 不够了  但是可以回退  之前匹配过的一次a

再第二次匹配的时候也参与了  回退

 

前面一个a都不匹配

整个表达式 匹配一个a

匹配三次

 

 

每次匹配两次  只能匹配一次

 

 

 

 

一个一个往后吐  吐出第一个的时候   表达式就能拿到匹配了

 

一次匹配

 

 

 

没次匹配一个a

 

 

 

匹配不到

 

 

 

 

一次匹配

 

 

 

只能匹配一次 勉强不能回退

 

 

 

匹配不到

 

 

 

 

两次匹配 不回退吗

 

回退对大括号无效?

 

 

一次匹配

 

 

 

匹配一次  吐一个a

吐一个a  把后边的a 加入

 

 

一次匹配  这里为什么不回退了?

回退是指多匹配的吐出来 补充后面的,而不是前面的去掉一部分 和后面的一起匹配

 

 

不匹配

 

不回退

 

 

贪婪 勉强  侵占实例讲解

 

 

 

 

 

尽可能多的匹配  那就就会去匹配 第二个foo

第一个foo 就匹配不到了

首先吐出一个o 再吐一个o 最后吐个f 就可以匹配了

 

 

 

一次匹配

 

 

第二次匹配的过程

 

 

两次匹配

 

 

首先匹配所有的字符  因为不回退  所以一次都匹配不上

 

 

 

 

 

刚开始匹配  到美元符号之前的所有  然后吐字符 到小写的d

 

 

 

一次匹配

 

 

 

刚开始匹配2 但后面不是字母 所有不行 继续  直到上面

第一次匹配

 

 

 

 

第二次匹配

 

 

第三次

 

 

这里开始就不行了

 

 

 

3次匹配

 

 

一次都不能匹配

 

 

 

 

 

捕获组

 

 

 

把取出的数字都放在分组里面  小括号里面

 

 

 

 

 

 

分组匹配到的内容

 

 

高亮

 

 

 

 

代码例子

 

 

两次匹配

反向引用

 

 

编号方式

从左到右 从外到里进行编号

 

最外面是第一个分组 0 整个表达式

 

 

 

 

反向引用

 

 

 

 

 

匹配两个数字

 

是对整匹配结果的替换 不能只替换其中一部分? 错 应该是可以的 先拿出分组 在替换需要替换的部分

 

前面括号里的内容再出现一次

 

 

 

 

 

 

 

搞不懂

问题

 

 

非捕获组  零断言表达式

 

 

 

 

 

 

 

每次都有一个分组

 

 

 

没有子分组了  只留下全部匹配  分组匹配就不要了

 

零宽度断言

 

 

正向肯定预查  一般放到表达式的结尾

 

 

 

 

 

正向否定预查  放在表达式的开头

 

 

 

反向肯定预查

 

 

 

反向否定预查

 

零宽度断言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值