提取之间的特定字符串

问题描述 投票:-2回答:2

我正在尝试使用库re从文件中获取一些数据。我需要的数据如下所示:

g:=Graph<5|{ {2, 3}, {4, 5}, {1, 3}, {1, 2}, {1, 5}, {1, 4}, {2, 4}, {3, 5}, {2, 5}, {3, 4} }>

因此它应该介于g:=Graph<>之间。

我尝试过

with open('Graphs.txt') as f:
    print(re.findall("g:=.*;;",f.read()))

但是它不起作用(它返回一个空列表)。有人可以帮助我吗?很抱歉,如果这很琐碎,但我没有经验。

文本文件中有很多文本解释了不同类型的图,这就是为什么其中包含许多相同类型的图的原因。

python regex python-3.x
2个回答
1
投票

您可以对{digit,digit}部分使用重复模式,并在组中捕获值。

g:=Graph<(\d+\|{ {\d+, \d+}(?:, {\d+, \d+})* })>

Regex demo

不太严格的模式可能是使用与除<>以外的任何字符匹配的否定字符类>

g:=Graph<([^<>]+)>

Regex demo


2
投票

您可以使用此正则表达式:

© www.soinside.com 2019 - 2024. All rights reserved.