Как я могу извлечь предложения с годами в них с помощью регулярного выражения? - PullRequest
3 голосов
/ 17 января 2012

Я разбираю статьи в Википедии. Я хочу извлечь каждое предложение с указанием года. Год может быть любым с 1000 по 2012 год. Ниже приведено регулярное выражение, которое я пробовал, но я не совсем понял его правильно. Пожалуйста, помогите уточнить это.

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

Ответы [ 2 ]

2 голосов
/ 17 января 2012

Давайте определим предложение как серию непериодических символов с точкой в ​​конце:

[^.]+\.

(конечно, у этого есть несколько проблем, но они нетривиальны для любого автоматизированного процесса, который нужно исправить, так что это придется делать). Тогда число от 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 голосов
/ 17 января 2012

Разделение предложений - это отдельная история.

Надеюсь, это поможет:

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

Теперь, как вы решите, что 1003 - это год, а не число, это другой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...