正则表达式(regular expression):
用\d可以匹配一个数字,\w可以匹配一个字母或数字
.可以匹配任意字符
用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符
用[]表示范围
A|B可以匹配A或B
^ 表示行的开头,^\d表示必须以数字开头。
$ 表示行的结束,\d$表示必须以数字结束。
不是很理解:
由于’-'是特殊字符,在正则表达式中,要用 \ 转义
作业:(未完成)
请尝试写一个验证Email地址的正则表达式。版本一应该可以验证出类似的Email:
someone@gmail.com
bill.gates@microsoft.com
# -*- coding: utf-8 -*-
import re
def is_valid_email(addr):
re_email=re.compile(r'^[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-].@[a-zA-Z]+\.com$')
if re_email.match(addr):
return True
# 测试:
assert is_valid_email('someone@gmail.com')
assert is_valid_email('bill.gates@microsoft.com')
assert not is_valid_email('bob#example.com')
assert not is_valid_email('mr-bob@example.com')
print('ok')
Run
Traceback (most recent call last):
File "/app/main.py", line 9, in <module>
assert is_valid_email('someone@gmail.com')
AssertionError
版本二可以提取出带名字的Email地址:
tom@voyager.org => Tom Paris
bob@example.com => bob
# -*- coding: utf-8 -*-
import re
def name_of_email(addr):
return None
# 测试:
assert name_of_email('<Tom Paris> tom@voyager.org') == 'Tom Paris'
assert name_of_email('tom@voyager.org') == 'tom'
print('ok')