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

如何用Python正则表达式提取专利文本的第一项权利要求?

解决Python正则提取专利第一项权利要求的问题

你的正则错误原因

  1. Python的re.compile不需要添加/分隔符,这是JavaScript等其他语言的正则写法,多余的分隔符会直接导致匹配失败
  2. 没有锚定目标文本的开头1.,正则无法定位到第一项权利要求的起始位置
  3. 仅预判单个字符2,而实际需要匹配的是第二项权利要求的起始标识2.,匹配范围不准确

正确的正则表达式

针对你的需求,正确的正则应该是:

r"1\..*?(?=2\.)"

正则各部分解释

  • 1\.:匹配第一项权利要求的开头1.,其中\是转义符,因为.在正则中是匹配任意字符的元字符,必须转义才能匹配实际的点号
  • .*?:非贪婪模式匹配任意字符(默认不包含换行),确保匹配到第一个2.就停止,避免过度匹配后续内容
  • (?=2\.):正向预查断言,匹配到2.的位置时停止,且不会将2.包含在最终匹配结果中

带换行场景的处理

如果权利要求文本包含换行,需要添加re.DOTALL标志,让.能够匹配换行符,完整代码示例:

import re

# 示例专利权利要求文本
claim_text = """1. 一种用于数据处理的装置,包括:
   - 数据采集模块,用于获取输入数据;
   - 数据处理模块,用于对输入数据进行分析。
2. 根据权利要求1所述的装置,其特征在于,所述数据处理模块采用机器学习算法。"""

# 编译正则并匹配
pattern = re.compile(r"1\..*?(?=2\.)", re.DOTALL)
match_result = pattern.search(claim_text)

if match_result:
    first_claim = match_result.group().strip()
    print("提取的第一项权利要求:")
    print(first_claim)

可选优化(应对格式差异)

如果专利文本中2.前可能存在空格,可以将正则调整为:

r"1\..*?(?=\s*2\.)"

其中\s*匹配任意数量的空白字符(空格、制表符等),适配更多格式的专利文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:03:25