视频资源:
从网上找资料看了这一块没有特别理解,还是看看视频吧
一、
正则在线测试工具:RegExr: 学习、构建 和 测试 正则表达式 Test RegEx
正则练习:
编程胶囊-打造学习编程的最好系统
eg:
1、re.findall() 查找文件中所有的***
2、上面方法不能排除句尾,句首等情况,可以采用模糊匹配的方式来解决
正则表达式中一个.表示一个任意的字符,可以是字母、数字等等
eg:打印a开头的三个字母的单词
(1)
(2)过滤掉空格,可以通过[a-z][a-z]这种方式过滤掉
(3)有些但是是其他单词的一部分:左右边留一个空格,即可排除掉右边还有单词的情况
(4)只想要一个单词,上面的结果,会出现空格的情况,可以在需要的部分加上小括号,表示只需要小括号里面的部分
即可打印出左右括号都去掉的结果
(5)去掉重复的单词,使用set
(6)如果想要去掉大A和小a只需要,第一个加上A就可以了
但是会有一个问题,没有打印出如下的And,因为这个A是开头的位置,可以用*解决,意思是可以匹配一个或者是多个或者是没有
解决方式:前面可以有一个空格或者是没有空格
发现safe的后缀也可以被打印出来
原因是,用*则A和a前面可以有一个空格,也可以没有空格,所以这里的safe被匹配到了
解决方式,分成两段过滤
可以看到上面的匹配结果是一对一对出现的,这样出现的原因是上面的写法有两个(),代表需要同时匹配左边和右边,如果没有,就用空来表示
(8)只想列出单词,不想列出是左边还是右边的规则:
可以把左边的和右边的规则分别拿出来写
(9)看到还有空,那么把空去掉
二、特殊字符总结:
.表示这个地方必须有一个字符,这个字符可以是任意字符
\d表示这个地方必须是一个数字
\d{数字c}表示可以匹配“数字c”个数字
\ d{2,3}可以匹配到两到三个数字
\ d{2}可以匹配两个数字
\w表示匹配一个字母,等同于[A-Za-z]
\w{2,3}表示匹配两个到三个字母
a+表示至少有一个字母a
a*表示可以为空也可以有一个或者任意个a
\d+表示至少有一个数字