如何使用正则表达式提取多年的句子?

时间:2012-01-17 11:06:49

标签: regex web-scraping

我正在解析维基百科的文章。我想提取一年中的每一句话。这一年可以是1000年至2012年的任何一年。以下是我一直在尝试的正则表达式,但我不能完全正确。请帮助改进这一点。

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

2 个答案:

答案 0 :(得分: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[^.]*\.

答案 1 :(得分:0)

分裂句子是另一回事。

希望有所帮助:

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

现在,你如何判断1003是一年而不是任何数字,这是一个不同的问题。