Unicode字符正则表达式,捕获组

我得到了一个正则表达式\ p {L} \ p {M} *我用来将单词分成字符,特别需要用印地语或泰语单词,其中字符可以包含多个“字符”,例如मछली如果在Java中以常规方式分割我得到[म] [छ] [ल] [ी]我想要的地方[म] [छ] [ली]

我一直在努力改进这个正则表达式以包含空格字符,以便当我拆分फार्मपशु时,我会得到后续组[फा] [र्] [म] [] [प] [शु]

但我没有运气。 有人能帮助我吗?

此外,如果有人有另一种方法可以做到这一点,java也可以作为替代解决方案。 我目前的java代码是

Pattern pat = Pattern.compile("\\p{L}\\p{M}*"); Matcher matcher = pat.matcher(word); while (matcher.find()) { characters.add(matcher.group()); } 

考虑使用BreakIterator :

 String text = "मछली"; Locale hindi = new Locale("hi", "IN"); BreakIterator breaker = BreakIterator.getCharacterInstance(hindi); breaker.setText(text); int start = breaker.first(); for (int end = breaker.next(); end != BreakIterator.DONE; start = end, end = breaker.next()) { System.out.println(text.substring(start,end)); } 

我使用Oracle Java 8实现测试了示例字符串。 如果需要,还要考虑ICU4J版本的BreakIterator 。