Python正则表达式

来源:互联网 发布:怎样在淘宝上联系卖家 编辑:程序博客网 时间:2024/06/03 11:45

正则表达式参考文档
正则表达式是对字符串操作的一种逻辑公式,通过它我们能筛选过滤出我们需要的内容。比如通过正则判断一串数字是否是电话号码,或者判断一个字符串是否是电子邮箱等等。
Python 中的正则用到了 re 模块。一般使用步骤是先把正则表达式的字符串转换成 Pattern 对象,接着用这个对象处理文本并得到匹配结果,然后根据结果信息,进行其他的操作。

1.match和search

import restring = "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 retime = "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位数字