regex 如何为多行字符串提取分组并基于子字符串?

fdx2calv  于 2023-05-30  发布在  其他
关注(0)|答案(1)|浏览(125)

下面是multi-line字符串的模式。

abcdef-001a.mno123.xyz.com
abcdef-001b.mno123.xyz.com
abcdef-001a.pqr123.xyz.com
abcdef-001b.pqr123.xyz.com
lkjh-001a.abc123.xyz.com
lkjh-001b.abc123.xyz.com
lkjh-001a.def123.xyz.com
lkjh-001b.def123.xyz.com
mnbg-001a.tyu123.xyz.com
mnbg-001b.tyu123.xyz.com
mnbg-001a.ijk123.xyz.com
mnbg-001b.ijk123.xyz.com

reg-ex (.*)\.(.*)\.xyz\.com匹配上述模式,其中group1与多个group2关联(例如:与mno123pqr123关联的abcdef-001a
我们如何识别这种配对?

Output1:

{'mno123':'pqr123', 'abc123':'def123', 'tyu123':'ijk123'}

下一步,将与上述字典相关的所有此类行分离。

Output2:

output2_list1:
abcdef-001a.mno123.xyz.com
abcdef-001b.mno123.xyz.com

output2_list2:
abcdef-001a.pqr123.xyz.com
abcdef-001b.pqr123.xyz.com

output2_list3:
lkjh-001a.abc123.xyz.com
lkjh-001b.abc123.xyz.com

output2_list4:
lkjh-001a.def123.xyz.com
lkjh-001b.def123.xyz.com

output2_list5:
mnbg-001a.tyu123.xyz.com
mnbg-001b.tyu123.xyz.com

output2_list6:
mnbg-001a.ijk123.xyz.com
mnbg-001b.ijk123.xyz.com

它可以是单独列表或任何其他可行的最佳方法来存储这些。这里我只是显示为单独的列表,以获得清晰的图片。
如上所述,它可以包含许多这样的线,并且还可以有许多不同的group1group2相关联。

wh6knrhe

wh6knrhe1#

我担心这可能是一个家庭作业问题,所以我不会给予代码,但这里是逻辑:
1.导入re库,以便可以使用正则表达式。
1.让我们假设你正在从一个文件中阅读这些行,所以你对每一行都做了这些事情:
1.在读取每一行时,对每一项使用match()函数,并将结果捕获为match对象。
1.每次,使用group()函数从匹配对象中提取两个感兴趣的组,并将它们存储在字典中,如下所示:检查字典,看看group(2)是否是一个键,如果不是,添加它,但总是将group(1)添加到与该键相关的列表中。
1.在阅读所有行并构建字典之后,您可以遍历字典并打印与每个键相关联的列表中的所有项的分组。

相关问题