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

如何使用Python查找文本中指定语句的段落编号?

解决方法

核心思路

先提取所有被<p>标签包裹的段落内容,再逐个检查目标句子是否存在于段落中,最终返回对应的段落编号(从1开始计数)。

正确实现代码(以Python为例)

import re

# 示例输入文本
input_text = """<p>第一段内容示例...</p>
<p>The lady of the house must prepare sandwiches on the occasion of her daughter’s engagement.</p>
<p>第三段内容示例...</p>"""

# 要查找的目标句子
target_sentence = "The lady of the house must prepare sandwiches on the occasion of her daughter’s engagement."

# 提取所有<p>标签内的段落
paragraphs = re.findall(r'<p>(.*?)</p>', input_text, re.DOTALL)

# 遍历段落定位目标句子
for idx, para in enumerate(paragraphs, start=1):
    if target_sentence in para.strip():
        print(f"目标句子在第{idx}段")
        break
else:
    print("未找到目标句子")

正则规则说明

  • r'<p>(.*?)</p>':使用非贪婪匹配.*?,确保只捕获单个<p>标签内的内容,避免误匹配跨段落的文本。
  • re.DOTALL:让正则中的.匹配包括换行符在内的所有字符,兼容段落内有换行的情况。

常见失效原因排查

如果之前的正则没生效,大概率是这几个问题:

  • 用了贪婪匹配.*而非.*?,导致匹配范围覆盖了多个段落。
  • 未添加re.DOTALL参数,段落内有换行时匹配中断。
  • 试图直接用正则定位句子位置,而非先提取段落再检查,逻辑复杂易出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:20:39