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

Python正则匹配多行字符串:提取Applicants与Inventors间内容

嘿,我来帮你搞定这个申请人信息提取的问题~

你之前的正则只能拿到第一行申请人,核心原因是:虽然加了re.MULTILINE,但.*默认还是只匹配当前行的末尾,不会跨行,所以第二行的Chevron信息就被漏掉了。

这里给你两种靠谱的解决方案:

方法1:支持跨行匹配的正则

用re.DOTALL(别名re.S)模式让.能匹配换行符,然后用非贪婪匹配抓取Applicants:到\nInventors:之间的所有内容,最后再整理成清晰的列表:

import re

my_str = '''PCT Filing Date: 2 December 2015 
Applicants: Silixa Ltd. 
Chevron U.S.A. Inc. (Incorporated in USA - California) 
Inventors: Farhadiroushan, Mahmoud 
Gillies, Arran Parker, Tom'''

# 匹配Applicants到Inventors之间的所有内容
regex = re.compile(r'Applicants:(.*?)\nInventors:', re.DOTALL)
match_result = regex.search(my_str)

if match_result:
    # 去掉前后空白,再按换行分割成单个申请人
    applicants_raw = match_result.group(1).strip()
    applicants_list = [line.strip() for line in applicants_raw.split('\n') if line.strip()]
    print(applicants_list)

执行后会输出:

['Silixa Ltd.', 'Chevron U.S.A. Inc. (Incorporated in USA - California)']

方法2:字符串分割(更直观)

如果觉得正则有点绕,直接用字符串分割更简单,适合结构固定的文本:

my_str = '''PCT Filing Date: 2 December 2015 
Applicants: Silixa Ltd. 
Chevron U.S.A. Inc. (Incorporated in USA - California) 
Inventors: Farhadiroushan, Mahmoud 
Gillies, Arran Parker, Tom'''

# 先切出Applicants之后的内容,再切掉Inventors及之后的部分
applicants_section = my_str.split('Applicants:')[1].split('\nInventors:')[0]
# 整理成干净的申请人列表
applicants_list = [line.strip() for line in applicants_section.split('\n') if line.strip()]
print(applicants_list)

这个方法逻辑清晰,不需要记正则规则,输出结果和上面完全一样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:22:50