正则表达式参考文档
正则表达式是对字符串操作的一种逻辑公式,通过它我们能筛选过滤出我们需要的内容。比如通过正则判断一串数字是否是电话号码,或者判断一个字符串是否是电子邮箱等等。
Python 中的正则用到了 re 模块。一般使用步骤是先把正则表达式的字符串转换成 Pattern 对象,接着用这个对象处理文本并得到匹配结果,然后根据结果信息,进行其他的操作。
1.match和search
import re
string = "I'm learning Python on this website."
pattern = re.compile(r'Python')
match = pattern.match(string)
search = pattern.search(string)
if match:
print(u"match 结果: " + match.group())
else:
print(u"match 结果: No match.")
if search:
print(u"search 结果: " + search.group())
else:
print(u"search 结果: No search.")
match() 只匹配字符串的起始,如果开始不匹配,便会返回 None,而 search() 是从头至尾对字符串进行匹配。
2.sub
import re
time = "2017-10-01"
pattern = re.compile(r'\D') #\D表示匹配任意非数字
sub = pattern.sub("/", time) #sub(替换后的字符,要匹配的字符)
print(sub)
print(re.sub(r'\D', "/", time)) #也可以简写成这样
3. 一个例子
import re
#正则匹配电话号码
phone = input('phone number: ')
pattern = re.compile('^0\d{2,3}\d{7,8}$|^1[3578]\d{9}$|^147\d{8}$')
match = pattern.match(phone)
if match:
print(match.group())
else:
print("error")
# 解释以下这个正则表达式
# ^表示匹配字符串开头
# $表示匹配字符串结尾
# \d表示匹配任意数字
# ^0\d{2,3}\d{7,8}$为座机格式
# 0是第一个数字,后面接2到3个数字组成区号,加上7或8位电话号
# ^1[3578]\d{9}$为手机号格式
# 1是第一个数字,第二个数字可能是3或5或7或8,后面接9位数字
# ^147\d{8}$为移动特殊号段
# 以147开头,后面接8位数字