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

如何提取固定单词与模式间的字符串?以指定键值对提取为例

固定关键词对应值的提取方案

一、针对目标字符串的具体实现

给定目标字符串:"Bar Z1050,c105 cpt 100580 prov 056875",可以用正则表达式精准匹配每个关键词对应的取值范围。以Python为例,代码实现如下:

import re

target_str = "Bar Z1050,c105 cpt 100580 prov 056875"
result = {}

# 提取bar对应的值(匹配Bar到下一个关键词cpt之间的内容)
bar_match = re.search(r'(?i)bar\s+(.*?)\s+cpt', target_str)
if bar_match:
    result['bar'] = bar_match.group(1)

# 提取cpt对应的值(匹配cpt到下一个关键词prov之间的内容)
cpt_match = re.search(r'(?i)cpt\s+(.*?)\s+prov', target_str)
if cpt_match:
    result['cpt'] = cpt_match.group(1)

# 提取prov对应的值(匹配prov到字符串结尾的内容)
prov_match = re.search(r'(?i)prov\s+(.*)$', target_str)
if prov_match:
    result['prov'] = prov_match.group(1)

print(result)
# 输出: {'bar': 'Z1050,c105', 'cpt': '100580', 'prov': '056875'}

二、通用提取方法总结

这类固定单词与后续内容的提取,核心思路是定位关键词位置,捕获关键词到下一个边界(下一个关键词/字符串结尾)之间的内容,具体可按以下步骤操作:

    1. 明确所有需要匹配的关键词集合,比如本例的bar、cpt、prov
    1. 针对每个关键词构建匹配规则:
    • 若关键词后接其他关键词:用(?i)关键词\s+(.*?)\s+下一个关键词,其中(?i)忽略大小写,\s+匹配任意空白字符,.*?非贪婪匹配中间内容
    • 若关键词为最后一个:用(?i)关键词\s+(.*)$,$匹配字符串结尾
    1. 利用编程语言的正则分组捕获功能提取内容;也可通过字符串分割、索引定位的方式实现(无需正则)

非正则的替代实现(Python)

如果不想用正则,也可以通过字符串分割实现:

target_str = "Bar Z1050,c105 cpt 100580 prov 056875"
lower_str = target_str.lower()
result = {}

# 提取bar的值
bar_start = lower_str.find('bar') + 3
cpt_start = lower_str.find('cpt')
result['bar'] = target_str[bar_start:cpt_start].strip()

# 提取cpt的值
cpt_end = lower_str.find('prov')
result['cpt'] = target_str[cpt_start+3:cpt_end].strip()

# 提取prov的值
prov_start = lower_str.find('prov') + 4
result['prov'] = target_str[prov_start:].strip()

print(result)
# 输出同样符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:01:18