2016-11-22 215 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)' –

相關問題