9

我正在开发一个运行一系列正则表达式的程序,以尝试从网页中查找 DOM 中的日期。例如,在www.engadget.com/2010/07/19/windows-phone-7-in-depth-preview/中,我会将“Jul 19th 2010”与我的正则表达式匹配。在我打开阿拉伯语网页之前,多种格式和语言的情况都很好。例如,考虑http://islammaktoob.maktoobblog.com/。2010 年 7 月 18 日的日期以阿拉伯语显示在帖子的顶部,但我不知道如何匹配它。有人有匹配阿拉伯日期的经验吗?如果有人可以发布一个示例或他们将用来匹配该阿拉伯日期的正则表达式,那将非常有帮助。谢谢!

更新:

越来越近:

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

为什么匹配出现乱序?

4

1 回答 1

2

如果您查看复制文本的二进制代码,您会发现该句子实际上是从右到左读取的(因此右侧的第一个字母是文件中的第一个字母)。
它在渲染时将文本更改回来,使其看起来像是从右到左书写的(这也导致了这种奇怪的选择行为)。

因此,您必须从右到左搜索。
此外,重要的是要注意数字没有切换。

例子:

如果您可以阅读"txet emos 20 yluJ 2016 srahc modnar"
则将其保存为"random chars 2016 July 20 some text"文件中。

于 2016-01-18T14:53:42.913 回答