使用正则表达式搜索unicode文本

时间:2009-08-25 13:09:58

标签: java unicode character-properties ligature

搜索用印地语(Devanagri)(UTF-16)编写的文件会产生以下问题。

该文件包含:

  

त्रासततत   जुगनींदनाहाबु

请注意,第一个char'त्र'是त+्+र的多个代码点 现在在搜索'त'时,我得到了4个匹配,包括第一个char的त。我正在使用Java。

如何搜索不属于多个代码点字符的'त'。

任何帮助将不胜感激。 :)

2 个答案:

答案 0 :(得分:1)

我相信你可以使用unicode属性来做到这一点。

त(?!\p{M}+)

只要M类别中没有任何代码点(即要与其他字符组合的字符),就应该匹配त代码点。它使用负向前瞻来做出断言。

E:如果这不能立即起作用,请尝试

\uxxxx(?!\p{M}+)

其中xxxx是त符号代码点的编号。

答案 1 :(得分:0)

似乎字形'त्र'实际上是连字或连词,而不是多个代码点字符。所以我猜你得到了预期的结果(除非你想匹配字形)。请参阅http://en.wikipedia.org/wiki/Devanagari#Conjuncts