正则表达式(re模块)
就其本质而言,正则表达式(或 RE)是一种小型的、高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。
字符匹配(普通字符,元字符):
1 普通字符:大多数字符和字母都会和自身匹配
>>> re.findall('alvin','yuanaleSxalexwupeiqi')
[]
2 元字符:. ^ $ * + ? { } [ ] | ( ) \
.占位符 表示占有一个位置 匹配换行符"\n"外的字符
^表示从开头查找 多行模式中匹配每一行的开头
$表示从结尾查找 多行模式中匹配每一行的开头
*匹配前一个字符0或者无限次
+匹配前一个字符1或者无限次
?匹配前一个字符0或者1次
{n}匹配前一个字符n次
{m,n}匹配前一个字符m至n次
\d 匹配任何十进制数; 它相当于类 [0-9]。
\D 匹配任何非数字字符; 它相当于类 [^0-9]。
\s 匹配任何空白字符; 它相当于类 [ \t\n\r\f\v]。
\S 匹配任何非空白字符; 它相当于类 [^ \t\n\r\f\v]。
\w 匹配任何字母数字字符; 它相当于类 [a-zA-Z0-9_]。
\W 匹配任何非字母数字字符; 它相当于类 [^a-zA-Z0-9_]
\b 匹配一个特殊字符边界,比如空格 ,&,#等
[ ] 可以取其中一个值 内部除了\ ^ -其他无特殊意义
( )分组 被括起来的表达式作为分组
(?P<name>)分组 额外的别名!
(?:)取消优先级
例:ret=re.search('(?P<id>\d{2})/(?P<name>\w{3})','23/com')
print(ret.group())#23/com
print(ret.group('id'))#23
|元字符 表示或
例:
ret=re.search('(ab)|\d','rabhdg8sd')
print(ret.group())#ab
例:
-
[0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线; -
[0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100','0_Z','Py3000'等等; -
[a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量; -
[a-zA-Z\_][0-9a-zA-Z\_]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)
re模块下的常用方法
re.findall("a","alvin yuan") #返回所有满足匹配条件的结果,放在列表里

浙公网安备 33010602011771号