Scala正则表达式:匹配长unicode Devanagari模式失败



考虑以下脚本代码:导入scala.util.matching.Regex

val VIRAMA = "्"
val consonantNonVowelPattern = s"(म|त|य)([^$VIRAMA])".r
// val consonantNonVowelPattern = s"(थ|ठ|छ|स|ब|घ|ण|ट|ज|ग|न|ष|भ|ळ|ढ|ख|श|प|ह|ध|ङ|म|झ|ड|ल|व|र|फ|क|द|च|ञ|त|य)([^$VIRAMA])".r
var output = "असय रामः "
output = consonantNonVowelPattern.replaceAllIn(output, _ match {
  case consonantNonVowelPattern(consonant, followingCharacter) =>
    consonant + VIRAMA + "a" + followingCharacter
})
println("After virAma addition: " + output.mkString("-"))

它会产生以下正确的输出:After virAma addition: अ-स-य-्-a- -र-ा-म-्-a-ः-

然而,如果我使用较长的模式(上面已经注释),我会得到以下错误的输出:After virAma addition: अ-स-्-a-य- -र-्-a-ा-म-्-a-ः-

这是个虫子吗?我做错什么了吗?

以下感谢Lalit Pant-

我假设第二种情况的正确输出是:अ-स-्-a-य-्-a--र-्-a-ा-म-्-a-ः-

如果是这种情况,请继续阅读。如果不是,请告诉我预期的输出。

问题似乎是,随着你更大的"辅音非元音模式"सय'在"output"中生成य'在"之后的模式匹配中显示为"followingCharacter"स'辅音'य'因此从未被报道为辅音。

最新更新