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

Python正则表达式匹配问题:address2值无法完整捕获

解决正则表达式无法完整匹配带空格字段值的问题

问题原因

原正则表达式r'(\w+)\s*=\s*([-,\w]+)'的第二个捕获组[-,\w]+仅匹配字母、数字、下划线、连字符和逗号,不包含空格和句号。当匹配到address2的值里的空格时,因为不在字符集范围内,匹配会提前终止,所以只能捕获到ca,2nd。

解决方案

调整正则规则,让值的捕获范围延伸到下一个键值对的起始位置(即空格+键名+等号)或者字符串末尾。使用非贪婪匹配+正向预查来实现:

import re

text = 'name = steve age=23 city = usa address1 = - address2 = ca,2nd floor ,3rd aven. qualification = doctor'
# 修正后的正则
pattern = r'(\w+)\s*=\s*(.*?)(?=\s+\w+\s*=|$)'
matches = re.findall(pattern, text)

# 查看结果
for key, value in matches:
    print(f"{key}: {value}")

正则说明

  • (\w+):捕获键名,和原规则一致;
  • \s*=\s*:匹配等号及前后任意数量的空格;
  • (.*?):非贪婪匹配任意字符(包括空格、句号等),避免过度匹配到后续键值对;
  • (?=\s+\w+\s*=|$):正向预查,指定停止匹配的条件——要么是下一个键值对的开头(空格+键名+等号),要么是字符串结尾。

执行后,address2的值会被完整捕获为ca,2nd floor ,3rd aven.。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:55:15