正则表达式匹配(获取组中的多个内容)

时间:2015-04-24 18:17:12

标签: regex

我无法处理这个正则表达式。

以下是一行中的字符串,我希望能够在swatchColorList中提取该内容,具体而言我希望单词Natural BurlapNavy,{{1} }

我所尝试的是'[(。*?)]'将所有内容都放在括号内,但我真正想要的是在一行中完成它?是可能的,还是需要分两步完成?

由于

Red

2 个答案:

答案 0 :(得分:1)

你可以试试这个正则表达式

(?<=[[,]\{\")[^"]+

enter image description here

如果不支持负面后卫,您可以使用

[[,]\{"([^"]+)

这将在第1组中保存所需的单词。

答案 1 :(得分:0)

import json

str = '{"id":"1349306","categoryName":"Kids","imageSource":"7/optimized/8769127_fpx.tif","swatchColorList":[{"Natural Burlap":"8/optimized/8769128_fpx.tif"},{"Navy":"5/optimized/8748315_fpx.tif"},{"Red":"8/optimized/8748318_fpx.tif"}],"suppressColorSwatches":false,"primaryColor":"Natural Burlap","clickableSwatch":true,"selectedColorNameID":"Natural Burlap","moreColors":false,"suppressProductAttribute":false,"colorFamily":{"Natural Burlap":"Ivory/Cream"},"maxQuantity":6}'
obj = json.loads(str)
words = []
for thing in obj["swatchColorList"]:
    for word in thing:
        words.append(word)
        print word

输出

Natural Burlap
Navy
Red

单词将存储到words列表中。我意识到这不是正则表达式,但我想阻止在序列化对象表示法上使用正则表达式,因为正则表达式不是为了解析带有嵌套表达式的字符串。