Python -使用Regex查找某些固定文本后的所有字符串

vwhgwdsa  于 2023-02-05  发布在  Python
关注(0)|答案(2)|浏览(141)

我刚接触Python,感到很困惑。我有一个电子邮件字符串列表,想得到在某个特定文本之后和之前的字符串。

Email: promo@madeup.com
Email: dave@madeup.com
Email: john@madeup.com

得到如下;

promo@madeup
dave@madeup
john@madeup

我设法得到了第一个字符串(如下),但似乎无法得到所有字符串

import re

lines = '''
Email: promo@madeup.com
Email: dave@madeup.com
Email: john@madeup.com
'''

emailAddr = lines.split('Email:')[1] #start
emailAddr2 = emailAddr.split('.com')[0] #end
print(emailAddr2)
y4ekin9u

y4ekin9u1#

使用lookbehind匹配每封电子邮件前的Email:前缀和.com后缀。

emails = re.findall(r'(?<=Email: ).*(?=\.com)', lines)
print(emails)

或者只是遍历这些行并删除Email:前缀。

emails = [s.replace('Email: ', '').replace('.com') for s in lines.splitlines() if s]
print(emails)
7xzttuei

7xzttuei2#

lines = '''
Email: promo@madeup.com
Email: dave@madeup.com
Email: john@madeup.com
'''

lines = lines.split('\n')
output = [x.split('Email:')[1].replace('.com','').strip() for x in lines if 'Email:' in x]
print(output)

将输出:

['promo@madeup', 'dave@madeup', 'john@madeup']

如果要将它们全部打印在新行上:

print('\n'.join(output))

将输出:

promo@madeup
dave@madeup
john@madeup

相关问题