练习网站:编程胶囊-打造学习编程的最好系统 (codejiaonang.com)
系统知识:最全的正则表达式教程
易错:
1.用于指定
{ } [ ] / \ + * . $ ^ | ?
这些特殊字符。如果想要匹配这些特殊字符则要在其前面加上反斜线\
。2. 锚点(边界)
^、$、\b、\B
^
:指定开头,$:
指定结尾。 \b : 单词边界:指[a-zA-z0-9]之外的字符
Python 正则表达式
match
匹配字符串
re.match()必须从字符串开头匹配!match方法尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。主要参数如下:
import re
a = re.match('test','testasdtest')
print(a) #返回一个匹配对象
print(a.group()) #返回test,获取不到则报错
print(a.span()) #返回匹配结果的位置,左闭右开区间
print(re.match('test','atestasdtest')) #返回None
search
和match差不多用法,从字符串中进行搜索
findall
从字面意思上就可以看到,findall是寻找所有能匹配到的字符,并以列表的方式返回
import re
print(re.findall(r'test','123test123test')) #以列表的方式返回
sub
查找字符串中所有相匹配的数据进行替换
print(re.sub("php","python","php是世界上最好的语言"))
#输出:python是世界上最好的语言
re.s
findall中另外一个属性re.S
在字符串a中,包含换行符\n,在这种情况下
- 如果不使用re.S参数,则只在每一行内进行匹配,如果一行没有,就换下一行重新开始。
- 而使用re.S参数以后,正则表达式会将这个字符串作为一个整体,在整体中进行匹配。
\D*表示匹配非数字 ?表示匹配前面的子表达式零次或一次类似于{0,1}
入门:多种匹配模式
实例 | 描述 |
---|---|
[Pp]ython | 匹配 “Python” 或 “python”。 |
rub[ye] | 匹配 “ruby” 或 “rube”。 |
[abcdef] | 匹配中括号内的任意一个字母。 |
[0-9] | 匹配任何数字。类似于 [0123456789]。 |
[a-z] | 匹配任何小写字母。 |
[A-Z] | 匹配任何大写字母。 |
[a-zA-Z0-9] | 匹配任何字母及数字。 |
[^au] | 除了au字母以外的所有字符。 |
[^0-9] | 匹配除了数字外的字符。 |
实例 | 描述 |
---|---|
. | 匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。 |
? | 匹配一个字符零次或一次,另一个作用是非贪婪模式 |
+ | 匹配1次或多次 |
* | 匹配0次或多次 |
\b | 匹配一个长度为0 的子串 |
\d | 匹配一个数字字符。等价于 [0-9]。 |
\D | 匹配一个非数字字符。等价于 [^0-9]。 |
\s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 |
\S | 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 |
\w | 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。 |
\W | 匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]‘。 |