アラビア語日付を解析するための正規表現を作成する方法
質問
WebページからDOM内の日付を見つけようとするために、一連の正規表現を実行しているプログラムに取り組んでいます。 たとえば、、私は私の正規表現と「2010年7月19日」と一致します。私がアラビア語のウェブページを打つまで、物事は複数のフォーマットや言語でうまくいきました。 例として、 http://islammaktoob.maktoobblob.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
.
一致が故障しているのはなぜですか?
解決
コピーしたテキストのバイナリコードを見ると、文が実際に右から左への読み取りが保存されていることがわかります(したがって、右側の最初の文字はファイルの最初の文字が最初のものです)。
それが左に書かれているようなようになるようにレンダリングしながらテキーテキストを変更します(これはこの異常な選択動作も原因です)。
あなたは右から左へ検索されなければならない。
さらに、数字が切り替わらないことに気付くことが重要です。
例:
"txet emos 20 yluJ 2016 srahc modnar"
を読み込む場合は、
ファイル内の"random chars 2016 July 20 some text"
として保存されます。
所属していません StackOverflow