سؤال

أنا أعمل على برنامج يقوم بتشغيل سلسلة من التعبيرات العادية لمحاولة العثور على تاريخ داخل دوم من صفحة ويب.على سبيل المثال ، في www.engadget.com/2010/07/19/windows-phone-7-in-depth-preview/, ، وأود أن تطابق" 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

لماذا تظهر المباراة خارج الترتيب?

هل كانت مفيدة؟

المحلول

إذا نظرت إلى الكود الثنائي للنص المنسوخ ، يمكنك أن ترى أن الجملة محفوظة بالفعل بالقراءة من اليمين إلى اليسار (لذا فإن الحرف الأول على الجانب الأيمن هو الأول في الملف).
يغير النص مرة أخرى أثناء العرض بحيث يبدو أنه مكتوب من اليمين إلى اليسار (وهذا يسبب أيضا سلوك التحديد الغريب هذا).

لذلك عليك البحث من اليمين إلى اليسار.
بالإضافة إلى ذلك ، من المهم ملاحظة عدم تبديل الأرقام.

مثال:

إذا كنت تستطيع القراءة "txet emos 20 yluJ 2016 srahc modnar",
يتم حفظها كما "random chars 2016 July 20 some text" في الملف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top