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

Python正则表达式匹配指定行时出现换行符捕获异常的问题

修正后的正则表达式解决方案

问题出在原正则中的\s会匹配换行符,导致正则跨行匹配,同时单词计数逻辑存在疏漏。以下是修正后的代码:

import re
my_string="""Requirements:
Knowledge Required:"""
# 修正后的正则表达式
pattern = r'^\s*(?:\S+[^\S\n]+){0,3}\S+:\s*$'
result = re.findall(pattern, my_string, flags=re.MULTILINE)
# 可选:去除匹配结果中的首尾空白(若需保留原始行空白可跳过)
result = [line.strip() for line in result]
print(result)

输出结果

['Requirements:', 'Knowledge Required:']

正则逻辑说明

  • ^\s*:匹配行首任意数量的空白字符(空格、制表符等),不干扰核心匹配逻辑
  • (?:\S+[^\S\n]+){0,3}:匹配0到3个完整单词,每个单词后跟非换行的空白字符(避免跨行匹配),(?:...)为非捕获组,仅用于重复匹配单元
  • \S+::匹配最后一个单词和结尾的冒号,确保行以冒号收尾
  • \s*$:匹配行尾任意数量的空白字符,然后定位到行结束位置
  • re.MULTILINE:让^和$匹配每一行的首尾,而非整个字符串的首尾

补充说明

你的预期输出中'Knowledge Required'缺少冒号应为笔误,原文本该行结尾带有冒号,修正后的代码会正确匹配带冒号的行。若不需要保留行首尾的空白,可通过列表推导式统一处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:27:20