我想从以下字符串中获取最后一个嵌套列表
data = '|[[1385827200000,5955],[1388505600000,5955],[1391184000000,5955],[1393603200000,5955],[1438358400000,53192],[1441036800000,53946],[1443628800000,65779]]&abc &|[[1541001600000,60891],[1543593600000,60910],[1546272000000,60964],[1548950400000,61005],[1551369600000,60864],[1554048000000,61309],[1556640000000,61092],[1559318400000,62556],[1561910400000,62379],[1564588800000,64356],[1567267200000,65979],[1569859200000,65979]]&def &|'
text = re.findall('(\[\[.*\]\])$', data)
但是它给出了None
。
正确的表达是什么?
答案 0 :(得分:2)
您的输入不以]]
结尾,因此放置锚点$
在您的正则表达式中无效。
您可以使用此正则表达式从输入中获取最后一对[[...]]
:
>>> text = re.findall(r'.*(\[\[.*?\]\])', data)[0]
>>> print (text)
'[[1541001600000,60891],[1543593600000,60910],[1546272000000,60964],[1548950400000,61005],[1551369600000,60864],[1554048000000,61309],[1556640000000,61092],[1559318400000,62556],[1561910400000,62379],[1564588800000,64356],[1567267200000,65979],[1569859200000,65979]]'
RegEx详细信息:
.*
:开始时贪婪匹配,以匹配最长的字符串(\[\[.*?\]\])
:在[[...]]
之间匹配和捕获文本。答案 1 :(得分:1)
您搜索的文本不以']}'结尾。 它实际上以“&def&|”结尾 所以用
text = re.findall('(\[\[.*?\]\])&def &|$', data)
答案 2 :(得分:0)
不使用regex
:
nested_list = eval(data.split('&|')[-2].split('&')[0])
或者,
nested_list = eval(data.split('&')[-3].strip('|'))
但这完全是特定情况的。