Python 用于匹配后跟数字的字母的正则表达式

Python 用于匹配后跟数字的字母的正则表达式,python,regex,Python,Regex,我必须匹配文件中的引用。引文可采用以下形式: 作者姓名、年份;作者姓名(年);(作者姓名,年份) 例如:“James et al.,2010”,“James&Juda,2010”,“James&Juda(2010)”,(James&Juda,2010)”。 我试过: [A-Za-z]+[0-9]{4} 及 我的意思是一个或多个字符后跟一些标点,然后是4位数字(指定年份)。但它不起作用。请在这方面帮助我。下面的正则表达式将匹配您提供的所有示例 (\S++\S*)+?(,| \()\S*(\d+)

我必须匹配文件中的引用。引文可采用以下形式: 作者姓名、年份;作者姓名(年);(作者姓名,年份) 例如:“James et al.,2010”,“James&Juda,2010”,“James&Juda(2010)”,(James&Juda,2010)”。 我试过:

[A-Za-z]+[0-9]{4}


我的意思是一个或多个字符后跟一些标点,然后是4位数字(指定年份)。但它不起作用。请在这方面帮助我。

下面的正则表达式将匹配您提供的所有示例


(\S++\S*)+?(,| \()\S*(\d+))?

但它不起作用
。。。你能给我们看一下相关的代码吗?你考虑的是空空格,当我在整个字符串上尝试这个时,它不起作用。代码如下:
s=“James et al.(2010)提出了两种算法,即任务分离和任务分组。”s1=re.match(r'(\s+\s*)+?(,| \()\s*(\d+)?'),s)。string
。输出是整个字符串。但所需要的只是James等人(2010)。请尝试
re.match(r'(\S++\S*)+?(,| \()\S*(\d+)?),S)。group(0)
在regex101.com上尝试正则表达式,它将解释您的正则表达式。谢谢。我会检查的。
(([A-Z]([A-Za-z][&.,])+\d{4})