2016-11-22 143 views
0

我必须匹配文档中的引用。引文可以是以下形式: 作者姓名,年份;作者姓名(年份); (作者姓名,年份) 例如:'James等人,2010','James &Juda,2010','James &Juda(2010)','(James &Juda,2010)'。 我曾尝试:匹配字母后跟数字的正则表达式

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

(([A-Z]([A-Za-z][&.,])+\d{4}) 

一个或多个字符其次是一些标点符号的出现,然后4个数字(指定年)就是我的意思。但它不工作。请帮助我这方面。

+0

'但它不工作......你能告诉我们相关的代码吗? –

+0

您正在考虑空位 –

回答

1

下面的正则表达式将匹配您给出的所有样本。

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

+0

谢谢。这样可行。你能解释一下吗? – user3568044

+0

嗨,当我在整个字符串上尝试这个不起作用。代码如下:'s =“James等人,(2010)提出了两种算法,即任务中断和任务分组。 s1 = re.match(r'(\ S + \ s *)+?(,| \()\ s *(\ d +)\)?',s).string'。输出是整个字符串。但是只需要** James等人,(2010)**。 – user3568044

+0

尝试're.match(r'(\ S + \ s *)+?(,| \()\ s *(\ d +)\)?',s).group(0)' –

相关问题