正则表达式(re模块)

就其本质而言,正则表达式(或 RE)是一种小型的、高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。
 
字符匹配(普通字符,元字符):
1 普通字符:大多数字符和字母都会和自身匹配
  >>> re.findall('alvin','yuanaleSxalexwupeiqi')
  []
2 元字符:. ^ $ * + ? { } [ ] | ( )
.占位符 表示占有一个位置 匹配换行符" "外的字符
^表示从开头查找 多行模式中匹配每一行的开头
$表示从结尾查找 多行模式中匹配每一行的开头
*匹配前一个字符0或者无限次
+匹配前一个字符1或者无限次
?匹配前一个字符0或者1次
{n}匹配前一个字符n次
{m,n}匹配前一个字符m至n次
d  匹配任何十进制数;      它相当于类 [0-9]。
D  匹配任何非数字字符;    它相当于类 [^0-9]。
s  匹配任何空白字符;      它相当于类 [ fv]。
S  匹配任何非空白字符;    它相当于类 [^ fv]。
w  匹配任何字母数字字符;   它相当于类 [a-zA-Z0-9_]。
W  匹配任何非字母数字字符; 它相当于类 [^a-zA-Z0-9_]
  匹配一个特殊字符边界,比如空格 ,&,#等
[ ] 可以取其中一个值 内部除了 ^ -其他无特殊意义
( )分组 被括起来的表达式作为分组
(?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") #返回所有满足匹配条件的结果,放在列表里
原文地址:https://www.cnblogs.com/lizhaoyu/p/7117198.html