У меня есть строка: Name Mass From To Disulphide bond -2.02 97 144 Disulphide bond -2.02 111 158 Disulphide bond -2.02 121 174 Disulphide bond -2.02 125 176 Disulphide bond -2.02 85 174 Disulphide bond -2.02 10 176
Я хочу вытащить кортежи (97,144), (111,158), (121,174), (125,176), (85,174), (10,176) (т.е.пары чисел после -2,02 в каждом случае).
Я хочу сопоставлять только строки, которые соответствуют этому точному количеству повторяющихся комбинаций (т. е. где точно повторяется одна и та же комбинация слов «Дисульфидная связь -2,02 XX»).6 раз).В файле будут другие строки с точно таким же шаблоном, но повторяющиеся более или менее раз, чем 6 раз (например, другая строка в файле может быть 'Name Mass From To Disulphide bond -2.02 97 144 Disulphide bond -2.02 111 158 Disulphide bond -2.02 121 174'
, я не хочу соответствовать этому).
Я изначально писал регулярное выражение, например:
six_regex = re.search(r'Name Mass From To Disulphide bond -2.02 ([\d]+) ([\d]+) Disulphide bond -2.02 ([\d]+) ([\d]+) Disulphide bond -2.02 ([\d]+) ([\d]+) Disulphide bond -2.02 ([\d]+) ([\d]+) Disulphide bond -2.02 ([\d]+) ([\d]+) Disulphide bond -2.02 ([\d]+) ([\d]+)',mod_line)
Мне интересно, есть ли способ написать регулярное выражение, например:
ix_regex = re.search(r' Disulphide bond -2.02 ([\d]+) ([\d]+) ',mod_line)
, где я добавляю 'matchтолько если вышеприведенная фраза соответствует 6 раз '.
Я использовал regex101.com для работы с чем-то вроде Disulphide bond -2.02 ([\d]+) ([\d\s]+){6}
, потому что я читал в другом месте на stackoverflow, что размещение числа в скобках может быть решением;но я, кажется, не получаю совпадений.
Может ли кто-нибудь посоветовать более аккуратное регулярное выражение, где мне нужно сопоставить повторяющийся шаблон n раз, чтобы он совпадал.