xx-li
6/4/2018 - 9:44 AM

Python正则表达式使用样例

正则表达式的简单使用样例。参考资料见:http://www.runoob.com/python/python-reg-expressions.html

import re

str = 'www.google.com.'
m = re.match('www', str)
m1 = re.match('google', str)
print(m.group(0))   #输出:www
print(m1)   #输出:None
# 从字符串的起始位置匹配,如果不是起始位置匹配成功的话,match()就返回none。


m2 = re.search('www\.(.*)\.', str)
m3 = re.search('www\.(.*?)\.', str)
print(m2.group(0) + '  ' + m2.group(1))   #输出:www.google.com.  google.com
print(m3.group(0) + '  ' + m3.group(1))   #输出:www.google.  google
#re.search 扫描整个字符串并返回第一个成功的匹配。


phone = "2004-959-559 # 这是一个国外电话号码"
# 删除字符串中的 Python注释
num = re.sub(r'#.*$', "", phone)
# 删除非数字(-)的字符串
num = re.sub(r'\D', "", phone)
print("电话号码是: " + num)  # 输出:电话号码是: 2004-959-559
print ("电话号码是 : "+ num) #输出:电话号码是 : 2004959559
# re.sub用于替换字符串中的匹配项。


m4 = re.findall('w\.(.*?)\.', str)
print(m4)  #返回的是一个数组,输出: ['google.com']
#在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。



m5 = re.finditer('ww\.(.*?)\.', str)
for match in m5:
    print (match.group(0))   #输出:ww.google.
    print(match.group(1))    #输出:google
#和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

import re
print(re.split('\W+', 'runoob, runoob, runoob.'))
# ['runoob', 'runoob', 'runoob', '']
print(re.split('(\W+)', ' runoob, runoob, runoob.'))
# ['', ' ', 'runoob', ', ', 'runoob', ', ', 'runoob', '.', '']
print(re.split('\W+', ' runoob, runoob, runoob.', 1))
# ['', 'runoob, runoob, runoob.']
print(re.split('a+', 'hello world'))  # 对于一个找不到匹配的字符串而言,split 不会对其作出分割
# ['hello world']
# split 方法按照能够匹配的子串将字符串分割后返回列表


pattern = re.compile('aa')
print(re.split(pattern, 'bbaaccaadd'))
# ['bb', 'cc', 'dd']
# compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
# re.compile(pattern[, flags])