You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用Regex findall提取固定文本后字符串的问题求助

解决方案:提取所有符合要求的邮箱内容

问题分析

你当前的代码仅通过单次split操作只能获取第一个匹配结果,要提取全部目标内容,需要遍历所有符合格式的行,或用正则表达式批量匹配。


方法一:逐行处理字符串

先将文本按行拆分,过滤空行后对每一行单独做分割处理:

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

# 去除首尾空白并按换行分割成列表
for line in lines.strip().split('\n'):
    line = line.strip()
    if not line:
        continue
    # 先分割掉开头的"Email: ",再分割掉结尾的".com"
    email_part = line.split('Email: ')[1].split('.com')[0]
    print(email_part)

运行输出:

promo@madeup
dave@madeup
john@madeup

方法二:使用正则表达式(推荐)

正则表达式可以一次性匹配所有符合格式的内容,代码更简洁高效,尤其适合处理复杂文本场景:

import re

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

# 匹配"Email: "和".com"之间的所有内容
results = re.findall(r'Email: (.*?)\.com', lines)

# 遍历输出所有结果
for res in results:
    print(res)

运行结果与方法一一致。其中正则表达式r'Email: (.*?)\.com'的作用:

  • (.*?)是非贪婪捕获组,精准匹配Email: 之后到.com之前的内容
  • re.findall会返回所有匹配到的字符串组成的列表

内容的提问来源于stack exchange,提问作者Ken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 07:02:12