Извлечение указанной c строки между <и> - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь использовать библиотеку 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()))

, но это не работает (это возвращало пустой список). Кто-нибудь может мне помочь? Прошу прощения, если это очень тривиально, но у меня нет опыта.

В текстовом файле много текста, объясняющего различные типы графиков, поэтому в нем много графиков одного типа.

Ответы [ 2 ]

3 голосов
/ 14 марта 2020

Вы можете использовать это регулярное выражение:

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

В противном случае ваш синтаксис правильный.

2 голосов
/ 14 марта 2020

Вы можете использовать повторяющийся шаблон для части {di git, di git} и захватить значение в группе.

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

Regex demo

Менее строгий шаблон может использовать отрицательный класс символов, соответствующий любому символу, кроме < или >

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

Regex demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...