有谁知道使用 python 组合正则表达式的好技术



我是编程新手,但已经进行了广泛的搜索,我似乎找不到任何让我走上正轨的东西。我有大量的正则表达式列表。如果可能的话,我需要找到一种方法来组合这些。我拥有的正则表达式只是数字

例如,我的列表如下所示

832118[0-3]
832118[7-8]
832119[0-1]
832119[4-6]
832119[8-9]
8321206
832120[0-4]
832120[8-9]

我想要的输出看起来像这样

832118[0-37-8]
832119[0-14-68-9]
832120[0-468-9]

感谢您提供的任何提示!

块引用

使用默认字典和这个简单的正则表达式: (d+)[(d+-d+)]

如果要匹配Numbers[Numbers-Numbers]以外的格式,则必须更改正则表达式。

import re
from collections import defaultdict
dct = defaultdict(str)
data = ['832118[0-3]', '832118[7-8]', '832119[0-1]', '832119[4-6]', '832119[8-9]', '8321206', '832120[0-4]', '832120[8-9]']
for line in data:
    mtch = re.findall(r"(d+)[(d+-d+)]", line)
    if mtch:
        dct[mtch[0][0]] += mtch[0][1]
for i, j in dct.items():
    print(i, '['+ j + ']')

输出:

832118 [0-37-8]
832120 [0-48-9]
832119 [0-14-68-9]

最新更新