正则表达式提取字符串等号后所有值,含最后值及提取DISPLAY4
解决方法
一步到位的正则方案
直接用这个正则表达式,就能同时提取所有=后的取值,并且自动把name字段里的DISPLAY4单独提取出来:
=(?:'\\\\\.\\(DISPLAY\d+)'|([^,]+))
Python代码示例
import re # 目标字符串 target_str = "x=0, y=0, width=1920, height=1080, width_mm=531, height_mm=299, name='\\\\.\\DISPLAY4', is_primary=True" # 匹配所有结果 match_results = re.findall(r"=(?:'\\\\\.\\(DISPLAY\d+)'|([^,]+))", target_str) # 合并分组的有效内容 final_values = [item[0] if item[0] else item[1] for item in match_results] print(final_values)
运行后输出:
['0', '0', '1920', '1080', '531', '299', 'DISPLAY4', 'True']
正则逻辑说明
这个正则用了分支匹配,覆盖两种场景:
- 第一种场景:匹配
name字段的带引号格式,精准捕获里面的DISPLAY+数字部分 - 第二种场景:匹配其他所有字段,直接捕获等号后到逗号(或字符串结尾)的内容,自然包含最后一项
True
更易读的简化方案
如果觉得分支正则有点绕,也可以分两步处理:先提取所有原始值,再单独处理name字段:
import re target_str = "x=0, y=0, width=1920, height=1080, width_mm=531, height_mm=299, name='\\\\.\\DISPLAY4', is_primary=True" # 先提取所有=后的内容,用(?:,|$)匹配分隔符(逗号或结尾),确保拿到最后一项 raw_values = re.findall(r"=(.*?)(?:,|$)", target_str) final_values = [] for val in raw_values: # 识别name字段的格式,提取DISPLAY4 if val.startswith("'\\\\.\\DISPLAY"): final_values.append(val.split('\\')[-1].strip("'")) else: final_values.append(val) print(final_values)
输出结果和之前一致。
内容的提问来源于stack exchange,提问作者Patrick T.
相关产品推荐
相关产品推荐

