在Python中使用正则表达式搜索包含特定字符串的特定电子邮件ID

在Python中使用正则表达式搜索包含特定字符串的特定电子邮件ID,python,regex,Python,Regex,我是Python新手。我有一个包含许多电子邮件ID和普通单词的字符串。我想获得包含特定单词的电子邮件ID的数量。目前,我正在使用正则表达式过滤掉包含字符串的单词,并使用此列表上的另一个正则表达式过滤掉电子邮件ID。我只是想知道是否有更好的方法 例如: Str1:这个fet@dmail.com进料是一根与get@dmail.com及net@dfet.com. Str2:fet 程序应将计数返回为2 1.fet@dmail.com 2.net@dfet.com 这是我目前正在使用的代码。。我正在创建

我是Python新手。我有一个包含许多电子邮件ID和普通单词的字符串。我想获得包含特定单词的电子邮件ID的数量。目前,我正在使用正则表达式过滤掉包含字符串的单词,并使用此列表上的另一个正则表达式过滤掉电子邮件ID。我只是想知道是否有更好的方法

例如:

Str1:这个fet@dmail.com进料是一根与get@dmail.com及net@dfet.com.

Str2:fet

程序应将计数返回为2 1.fet@dmail.com 2.net@dfet.com

这是我目前正在使用的代码。。我正在创建一个包含str2的字符串列表,并验证它是否是电子邮件id

text_to_search = ".*(" + word_to_be_searched.lower() + ").*"
regex = re.compile(text_to_search)
lister = [m.group(0) for l in row_value[column_index].lower().split( ) for m in       [regex.search(l)] if m]

for li in lister:
    if re.match("^[a-zA-Z0-9._%-]+@[a-zA-Z0-9._%-]+.[a-zA-Z]{2,6}$", li):
        match_count = match_count + 1

请运行下面的代码。它将解决您的问题

import re
regex = re.compile(("([a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`"
"{|}~-]+)*(@|\sat\s)(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(\.|"
"\sdot\s))+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)"))
email_iter = (email[0] for email in re.findall(regex, str1) if not   email[0].startswith('//'))
email_collec = []
for email in email_iter:
   email_collec.append(email)
count = 0
str2 = "fet"
for i in range(len(coll)):
    if str2 in coll[i]:
        count+=1
print count  

只要编译这个正则表达式::)如果我们看不到您现在使用的是什么方式,就很难知道什么是“更好的方式”。您当前的两个正则表达式是什么?调用它们的代码是什么样的?