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

如何编写正则表达式提取两个问题之间的换行分隔答案内容

你现有代码存在三个明显问题:

  1. 变量名错误,re.findall里传入的splitext和你定义的文本变量text不一致,首先要修正。
  2. Python正则默认不支持.匹配换行符,你写的.*?无法匹配多行的答案内容。
  3. 正则末尾写的Question\)和示例里的Question 2 (结构不匹配,会直接匹配失败。

正确实现代码

import re

text = """Which feature is not part of the linux system?
pipe
2) dirx
ls
ps

Question 2 ("""

# 正则匹配问号后到下一行开头的Question之前的内容
match_res = re.search(r'\?\s*(.*?)\s*(?=^Question)', text, flags=re.S | re.M)
if match_res:
    # 拆分内容为列表,同时过滤空行
    output = [line.strip() for line in match_res.group(1).split('\n') if line.strip()]
print(output)

运行输出结果为:
['pipe', '2) dirx', 'ls', 'ps']

正则逻辑说明

  • \? 匹配上一个问题末尾的问号
  • \s* 匹配问号后所有空白字符,包括换行、空格
  • (.*?) 非贪婪匹配所有内容,碰到后续匹配规则就停止,re.S(也叫re.DOTALL)让.可以匹配换行符,支持多行内容提取
  • (?=^Question) 是正向预查规则,只会匹配以行开头的Question,不会把Question本身包含到结果里,搭配re.M(也叫re.MULTILINE)让^可以匹配每一行的开头,避免内容中间出现Question单词导致误匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:24:01