本文共 672 字,大约阅读时间需要 2 分钟。
以下是正则表达式常见用法
\d:一个数字
\w:一个字母或数字
.:任意字符
*:任意个字符(包括0个)
+:至少一个字符
?:0个或1个字符
{n}:n个字符
{n,m}:n-m个字符
\s:一个空格(也包括Tab等空白符)
[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个字符)
(P|p)ython:‘Python’或者’python’
^:行的开头,^\d表示必须以数字开头。
$:行的结束,\d$表示必须以数字结束。
py也可以匹配’python’,但是加上^py$就变成了整行匹配,就只能匹配’py’了。
贪婪匹配
re.match(r’^(\d+)(0*)$’, ‘102300’).groups()
(‘102300’, ‘’) 由于\d+采用贪婪匹配,直接把后面的0全部匹配了,结果0*只能匹配空字符串了。
必须让\d+采用非贪婪匹配(也就是尽可能少匹配),才能把后面的0匹配出来,加个?就可以让\d+采用非贪婪匹配:
re.match(r’^(\d+?)(0*)$’, ‘102300’).groups()
(‘1023’, ‘00’)
转载地址:http://sicpn.baihongyu.com/