如何用正则表达式提取文本中Subject、Action、Capability后的内容
修正后的正则表达式方案
针对你提供的目标文本,原正则无法匹配的核心问题是错误用制表符\t匹配分隔空格,以及Subject正则包含多余规则,以下是修正后的正则:
# 修正后的正则表达式 action_pattern = r'^T\d+\s+Action\s+\d+\s+\d+\s+(.+)$' subject_pattern = r'^T\d+\s+Subject\s+\d+\s+\d+\s+(.+)$' capability_pattern = r'^A\d+\s+Capability\s+T\d+\s+(.+)$'
关键修正说明:
- 替换所有
\t为\s+:目标文本用的是多个空格而非制表符,\s+可匹配任意数量空白字符(空格/制表符都兼容),避免因空格数量不一致导致匹配失败 - 简化Subject正则:原正则里的
;?\d+? \d+是多余规则,目标文本中Subject后只有两个数字,直接匹配\d+\s+\d+即可 - 关键字后统一用
\s+分隔:保证Action、Subject、Capability与后续内容的分隔匹配更灵活
测试结果
用修正后的正则匹配你的目标文本:
- Subject行提取结果:
xxx - Action行提取结果:
xxx - Capability行提取结果:
xxx
内容的提问来源于stack exchange,提问作者John Angelopoulos
相关产品推荐
相关产品推荐

