python正则表达式练习

1.正则表达式入门

例1:匹配不包含数字的字符组
在这里插入图片描述
可以通过在字符数组开头使用 ^ 字符实现取反操作,从而可以反转一个字符组(意味着会匹配任何指定字符之外的所有字符)。

例2:这里的 n[^e] 的意思就是n后面的字母不能为 e。
在这里插入图片描述
例3:接下来请你匹配爱后面不包含你的数据。
在这里插入图片描述
例4:匹配不包含小写字母的数据。
在这里插入图片描述

2.快捷方式

1.快捷匹配数字和字母

例:请你使用快捷方式匹配下面的单词。
在这里插入图片描述
以目前学到的内容,如果想要匹配所有的字母,会使用[A-Za-z],要匹配数字会使用[0-9]

还有没有更简洁的方式呢?

正则表达式引擎提供了一些快捷方式如:\w 可以与任意单词字符匹配。

当我们想要匹配任意数字的时候也可以使用快捷方式\d,d即digit数字的意思,等价于[0-9]。

快捷方式描述
\w与任意单词字符匹配,任意单词字符表示 [A-Z]、 [a-z]、[0-9]、_
\d与任意数字匹配

2.匹配空白

例:匹配空白分隔的单词
在这里插入图片描述
知识点

快捷方式描述
\s\s快捷方式可以匹配空白字符,比如空格,tab、换行等

例如:
在这里插入图片描述

3.单词边界

例:匹配如下数据
在这里插入图片描述

快捷方式描述
\b匹配的是单词的边界

\bmaster\b 就仅匹配有边界的master单词。
在这里插入图片描述

当然其他类型的数据,比如数字也能匹配:
在这里插入图片描述

3. 总结

快捷方式描述示例
\s\s快捷方式可以匹配空白字符,比如空格,tab、换行等
\w* 可以匹配[0, ]
\w+ 可以匹配[1, ]
^表示取反n[^e] 的意思就是n后面的字母不能为 e
a{N} 重复n次
\s 匹配空白\s快捷方式可以匹配空白字符,比如空格,tab、换行等。
\bxxx\b 单词边界\bmaster\b 就仅匹配有边界的master单词。而不能匹配masters
. 字符只有一个不能匹配的字符,也就是换行符(\n).字符代表匹配任何单个字符,它只能出现在方括号以外。
字符组([][Jj]ava [Jj]表示[]内的字母2选一, 允许匹配一组可能出现的字符。[Jj]ava可以匹配Java8.0和java8.0,不能匹配jjva和Javv
? 可选字符配一个单词的不同写法colou?r和honou?r,可以匹配color和colour,或者honor与honour
{M,N}不知道要匹配字符组要重复的次数,如身份证有15位也有18位的。重复区间,\d{3,4} 既可以匹配3个数字也可以匹配4个数字,不过当有4个数字的时候,优先匹配的是4个数字(\d{3,4}优先3)\d{3, 4}? 匹配073或者0731
\w与任意单词字符匹配,任意单词字符表示 [A-Z]、 [a-z]、[0-9]、_
\d与任意数字匹配d 即 digit 数字的意思,等价于[0-9]
取反对于\w的取反为\W,将小写改写成大写即可,其他快捷方式也遵循这个规则。
开始和结束^指定的是一个字符串的开始,$指定的是一个字符串的结束。
.表示任意字符,.字符只有一个不能匹配的字符,也就是换行符(\n),不过要让.字符与换行符匹配也是可以的a… 可以匹配aii air等
{N}重复在一个字符组后加上{N} 就可以表示在它之前的字符组出现N次。\d{4}-\d{7} 可匹配 0731-8825951,0733-8794561
开闭区间遇到字符组的重复次数没有边界,闭区间不写即可表示匹配一个或无数个。\d{1,} 可以分别匹配 073、0731、123456789
++ 匹配1个到无数个+等价于{1,}
**代表0个到无数个*等价于{0,}
[]字符组[] 字符组中可以放多个条件例如,想要匹配数字的小写字母可以这样写:[0-9a-z]

4. 多种匹配模式(总结)

在这里插入图片描述
在这里插入图片描述

5. 案例

s = 'he111Lowor1d'
s1 = re.findall(r'(\d+)', 'a' + s + '0')
s1
Out[11]: ['111', '1', '0']

s = 'he11owor1d'
s1 = re.findall(r'(\D+)(\d+)', 'a' + s + '0')  # \D+匹配多个非数字,\d+匹配多个数字
s1
Out[5]: [('ahe', '11'), ('owor', '1'), ('d', '0')]

6. 相关网站(正则训练)

7. 进阶

7.1 分组

在正则表达式中,提供了一种将表达式分组的机制,当使用分组时,除了获得整个匹配。

还能够在匹配中选择每一个分组。要实现分组很简单,使用 () 即可。
在这里插入图片描述
在这里插入图片描述

7.2 非捕获分组

有时候,我们并不需要捕获某个分组的内容,但是又想使用分组的特性。

这个时候就可以使用非捕获组(?:表达式),从而不捕获数据,还能使用分组的功能。

例如,想要匹配两个字母组成的单词,或者四个字母组成的单词,就可以使用非捕获分组:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值