正则表达式之match search findall finditer的用法

时间:2023-01-22 22:39:49

直接贴代码:
参考:http://cuiqingcai.com/977.html

# -*- coding:utf-8 -*- 
# 邮箱格式-正则表达式匹配

import re


def print_list(list):
for l in list:
print l
def findall_demo():
txt = 'IF you 100 hahah $9.90'
# m = re.findall(r'(\d+).*\$(\d+\.?\d*)',txt)
str1 = 'aaf ssa@ss.net asdf -asdb@163.com.cn asdf ss-a@ss.net asdf asdd.cba@163.com afdsaf'
m = re.findall(r'\w*-*\.*\w*@\w+\.\w+',str1)
print_list(m)

# match是从第一个字符开始匹配 匹配成功或不成功都结束 一个一个字符去匹配 知道匹配一模一样的就返回匹配的结果 并且结束 如果在从开头
# 往后匹配的过程中发现任何一个字符不匹配 结束匹配 返回None
def match_demo():
regx = re.compile(r'aaf')
str2 = 'aaafaaf ssa@ss.net asdf -asdb@163.com.cn asdf ss-a@ss.net asdf asdd.cba@163.com afdsaf'
result_split = re.split(r' *',str2)
# print_list(result_split)
for result in result_split:
m = re.match(r'\w*-*\.*\w*@\w+\.\w+',result)
if m:
print(m.group())

# search方法与match方法极其类似,区别在于match()函数只检测re是不是在string的开始位置匹配,search()会扫描整个string查找匹配,
# match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回None。
# 同样,search方法的返回对象同样match()返回对象的方法和属性。
# search匹配成功就结束
def search_demo():
str3 = 'aaafaaf ssa@ss.net asdf -asdb@163.com.cn asdf ss-a@ss.net asdf asdd.cba@163.com afdsaf'
result_split = re.split(r' *',str3)
m = re.search(r'\w*-*\.*\w*@\w+\.\w+',str3)
for result in result_split:
m = re.search(r'\w*-*\.*\w*@\w+\.\w+',result)
if m:
print(m.group())
def finditer_demo():
str3 = 'aaafaaf ssa@ss.net asdf -asdb@163.com.cn asdf ss-a@ss.net asdf asdd.cba@163.com afdsaf'
m = re.finditer(r'\w*-*\.*\w*@\w+\.\w+',str3)
if m:
for result in m:
print(result.group())



if __name__=='__main__':
match_demo()
#
# for item in items:
# print item