Если записи такие же непротиворечивые, как представлены в вашем примере, вам не нужно использовать регулярные выражения.Простое разбиение текстового файла на списки токенов поможет.Например:
txt = '\n10: Vikelis M, Rapoport AM. Role of antiepileptic drugs as preventive agents for \nmigraine. CNS Drugs. 2010 Jan 1;24(1):21-33. doi:\n10.2165/11310970-000000000-00000. Review. PubMed PMID: 20030417.\n\n\n21: Johannessen Landmark C, Larsson PG, Rytter E, Johannessen SI. Antiepileptic\ndrugs in epilepsy and other disorders--a population-based study of prescriptions.\nEpilepsy Res. 2009 Nov;87(1):31-9. Epub 2009 Aug 13. PubMed PMID: 19679449.\n\n\n'
lines = [token.replace('\n', '') for token in txt.split('.')]
for line in lines:
print line
будет построчно печатать каждый элемент ваших ссылок:
10: Vikelis M, Rapoport AM
Role of antiepileptic drugs as preventive agents for migraine
CNS Drugs
2010 Jan 1;24(1):21-33
doi:10
2165/11310970-000000000-00000
Review
PubMed PMID: 20030417
21: Johannessen Landmark C, Larsson PG, Rytter E, Johannessen SI
Antiepilepticdrugs in epilepsy and other disorders--a population-based study of prescriptions
Epilepsy Res
2009 Nov;87(1):31-9
Epub 2009 Aug 13
PubMed PMID: 19679449
Опять же, если вы можете верить, что в первой строке записи есть автор;второй заголовок, третий журнал и т. д., вы можете сделать это очень быстро.Если информация немного более «контекстная», тогда вы можете НАЧАТЬ, используя regexp, на этом этапе.
Удачи.