小记 :2019-05-08
要匹配变长的字符,在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符:
来看一个复杂的例子:\d{3}\s+\d{3,8}。
我们来从左到右解读一下:
\d{3}表示匹配3个数字,例如'010';
\s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配' ',' '等;
\d{3,8}表示3-8个数字,例如'1234567'。
综合起来,上面的正则表达式可以匹配以任意个空格隔开的带区号的电话号码。
如果要匹配’010-12345’这样的号码呢?由于’-‘是特殊字符,在正则表达式中,要用’'转义,所以,上面的正则是\d{3}-\d{3,8}。
但是,仍然无法匹配’010 - 12345’,因为带有空格。所以我们需要更复杂的匹配方式。
判断是否为有效的Email格式.
^ 匹配一行的开头
\w 指数字英文加下划线
. 指一个字符"."
- 指一个字符"-"
[\w.-] 指一个范围 即 数字、字母、下划线、字符"."、字符"-"
- 量词 一个或多个
[\w.-]+ 指一个或多个[\w.-] 这样的字符,如 “aaa” “-ab” “c” “s._-l”
@ 指一个字符"@"
? 量词 一个或零个
- 量词 零个或多
def is_valid_email(addr):
if re.match(r'^\w[\w\\.]+@\w+\.com$',addr):
return True
else:
return False