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

Python re模块正则匹配多词字符串失效问题求解

问题根因

原正则取值部分使用\w+匹配规则,该规则仅能匹配连续的字母、数字、下划线字符,遇到空格、连字符这类非单词字符就会终止匹配,因此只能捕获到等号后的第一个单词片段。

修正实现

根据示例的文本格式,取值的终止边界为行尾的逗号,调整正则匹配规则,捕获等号后到逗号前的所有有效内容,同时自动过滤值首尾的多余空白:

import re

data = 'DisplayName                     =   Umarex Steel Storm BB-Gun   ,'
pattern = r'(\w+)\s*=\s*([^,]+?)\s*,'
match_result = re.findall(pattern, data)
print(match_result)

运行输出:

[('DisplayName', 'Umarex Steel Storm BB-Gun')]
正则逻辑说明
  • (\w+):匹配等号左侧的键名,和原逻辑一致
  • \s*=\s*:匹配等号以及等号前后任意数量的空格、制表符等空白字符
  • ([^,]+?):非贪婪匹配所有非逗号字符,覆盖值中包含的空格、连字符等特殊符号
  • \s*,:匹配值末尾到逗号之间的多余空白,确保这部分空白不会被捕获到值的结果中

如果你的键值对取值以行尾为边界、没有末尾逗号,只需要把正则替换为r'(\w+)\s*=\s*(.+?)\s*$',搭配re.MULTILINE标志即可逐行匹配所有符合规则的键值对。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:21:48