如何仅对与模式匹配的文本执行替换

时间:2018-06-19 13:49:05

标签: python regex

我有一段这样的文字:

[{1,2,3,4}, 3, 5,2,4, {1,2}, {1,2,3,4}, {1,33,3443}, 1..10]

在这里,花括号{}中的数字应视为一个原子。最后,我想将文本拆分为数组中的各个元素。所以最后,经过一些操作的文本需要变成这样的列表

expected = ['{1,2,3,4}', '3', '5', '2', '4', '{1,2}', '{1,2,3,4}', '{1,33,3443}', '1..10']

每个元素都作为单独的字符串。

我无法找出拆分的好方法。我可以将字符串作为数组并对其进行迭代,然后仅在,中用其他定界符替换{}并使用split函数对,进行拆分以获取什么我想要。但是我想知道是否有可能通过正则表达式对与某种模式匹配的文本部分应用替换。我试图通过做这样的事情来做到这一点。

line='[{1,2,3,4}, 3, 5,2,4, {1,2}, {1,2,3,4}, {1,33,3443}]'
# I hope the comma in {1,2,3,4} are substituted by : and i get {1:2:3:4}
# on which i can do a re.split or just split to get elements in form i want
      # find text within {}       on the text found, replace ',' with ':'
re.sub(r'(?P<set_value>\{.*?\})', re.sub(r',',':', '\g<1>'), line)  

当我运行上面的代码时,我得到的是原始行,没有任何更改

'[{1,2,3,4}, 3, 5,2,4, {1,2}, {1,2,3,4}, {1,33,3443}]'

有没有一种方法可以修正表达式以获得正确答案?

0 个答案:

没有答案