Как создать регулярное выражение для разбора арабских дат - PullRequest
9 голосов
/ 20 июля 2010

Я работаю над программой, которая запускает серию регулярных выражений, чтобы попытаться найти дату в DOM на веб-странице.Например, в www.engadget.com / 2010/07/19 / windows-phone-7-подробно-предварительный просмотр / я бы сопоставил «19 июля 2010» с моим регулярным выражением.В нескольких форматах и ​​на разных языках дела шли хорошо, пока я не попал на арабскую веб-страницу.В качестве примера рассмотрим http://islammaktoob.maktoobblog.com/. Дата 18 июля 2010 года отображается на арабском языке вверху поста, но я не могу понять, как ее сопоставить.У кого-нибудь есть опыт сопоставления арабских дат?Если бы кто-то мог опубликовать пример или регулярное выражение, которое они использовали бы, чтобы соответствовать этой арабской дате, это было бы очень полезно.Спасибо!

Обновление:

Приближение:

String fromTheSite = "كتبها اسلام مكتوب ، في 18 تموز 2010 الساعة: 09:42 ص"; 
    NamedMatcher infoMatcher = NamedPattern.compile("(?<Day>[0-3]?[0-9]) (?<Month>يناير|فبراير|مارس|أبريل|إبريل|مايو|يونيو|يونيه|يوليو|يوليه|أغسطس|سبتمبر|أكتوبر|نوفمبر|ديسمبر|كانون الثاني|شباط|آذار|نيسان|أيار|حزيران|تموز|آب|أيلول|تشرين الأول|تشرين الثاني|كانون الأول) (?<Year>[1-2][0-9][0-9][0-9]) ", Pattern.CANON_EQ).matcher(fromTheSite);
    while(infoMatcher.find()){
        System.out.println(infoMatcher.group());
        System.out.println(infoMatcher.group("Day"));
        System.out.println(infoMatcher.group("Month"));
        System.out.println(infoMatcher.group("Year"));
    }

Дает мне

18 تموز 2010
18
تموز
2010

Почему совпадение происходит не по порядку?

1 Ответ

2 голосов
/ 18 января 2016

Если вы посмотрите на двоичный код вашего скопированного текста, вы увидите, что предложение фактически сохраняется, читая справа налево (поэтому первая буква справа является первой в файле). При рендеринге текст изменяется обратно так, что выглядит так, будто он написан справа налево (это также вызывает странное поведение выделения).

Для этого вам нужно искать справа налево.
Кроме того, важно отметить, что номера не переключаются.

Пример:

Если вы умеете читать "txet emos 20 yluJ 2016 srahc modnar",
он сохраняется как "random chars 2016 July 20 some text" в файле.

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