Python笔记-020-正则表达式

小记 :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

你可能感兴趣的:(Python学习,Python笔记)