2012-01-17 38 views
3

我正在解析維基百科文章。我想提取每一句話,其中有一年。這一年可以是1000年至2012年的任何事情。下面是我一直在嘗試的正則表達式,但我不太清楚。請幫助完善這一點。如何使用正則表達式提取多年的句子?

$regex = '/\.\s.+\s[1|2][0-9]{3}\.\s/'; 

回答

2

讓我們定義一個句子中的非週期字符,並在最後一個句號運行:

[^.]+\. 

(這有幾個問題,當然,但他們平凡的任何自動化過程來解決,所以這將不得不這樣做)。然後,1000和2012之間的數字將是

\b(1[0-9]{3}|200[0-9]|201[0-2])\b 

它們合併:

[^.]*\b(1[0-9]{3}|200[0-9]|201[0-2])\b[^.]*\. 
0

分裂句子是一個不同的故事。

希望它能幫助:

10[0-9]{2}|200[0-9]|201[0-2] 

現在,你將如何決定是1003年,而不是任意數量,這是一個不同的問題。