Python 使用正则表达式从字符串中提取多个单词

Python 使用正则表达式从字符串中提取多个单词,python,regex,string,python-2.7,Python,Regex,String,Python 2.7,我试图从一篇论文的一部分中提取所有参考文献作为一个列表。现在我只得到一个段落,并将其设置为字符串 我想知道在python上使用正则表达式是否可以做到这一点?我希望能够从字符串中提取多个单词,但到目前为止,我所能做的只是提取年份、单数单词或字符,而不是一次提取整个引用。 此外,由于参考文件的格式可能有所不同,因此存在很多条件,例如: text=如Macelroy等人1967年所示,bla-bla。Podar&Reysenbach 2006还研究了。。。另一个例子是。。。瓦尔德斯等人,2008年。最

我试图从一篇论文的一部分中提取所有参考文献作为一个列表。现在我只得到一个段落,并将其设置为字符串

我想知道在python上使用正则表达式是否可以做到这一点?我希望能够从字符串中提取多个单词,但到目前为止,我所能做的只是提取年份、单数单词或字符,而不是一次提取整个引用。 此外,由于参考文件的格式可能有所不同,因此存在很多条件,例如:

text=如Macelroy等人1967年所示,bla-bla。Podar&Reysenbach 2006还研究了。。。另一个例子是。。。瓦尔德斯等人,2008年。最显著的是。。。。爱德华兹、巴特利特和斯特林,2003年

有些数字在括号内,有些完全被括号包围,有些有多个大写单词,有些有等等。是否可以在一次搜索中定义所有这些需求,然后将它们一起打印出来

我知道有一些网站或程序我可以把论文放进去为我提取所有的参考资料,但我想知道如何做自己

谢谢

注意:编辑以澄清引用将如何嵌入字符串中

import re
t = """
As shown by Macelroy et al. (1967), bla bla. Podar
 & Reysenbach (2006) also researched ... Another example is ... (Valdes et al. 2008). Most notably .... Edwards, Bartlett & Stirling (2003).
"""
f = ["".join(result).replace("(","") for result in re.findall("([A-Z])([^A-Z)]+|[^.,]+)([0-9]{4})",t,re.S)]
print(f)
[A-Z]匹配大写字母 [^A-Z]+|[^,]+匹配两种情况

匹配不带大写字母和 匹配不包含的字符串,。因为如果包含,或者。可以匹配整个句子 [0-9]{4}以4个数字结尾


告诉我们您的预期输出I已编辑字符串以更好地显示预期输入。我的预期输出只是一个理想情况下没有括号的参考文献列表,因此Macelroy et al.1967,Podar&Reysenbach 2006,Valdes et al.2008,Edwards,Bartlett&Stirling 2003,try this f=[.joinresult.replace,for result in re.findall[a-Z]+|[^,]+[0-9]{4},t],我不知道这对你的整篇文章是否有效,谢谢柯里迪