我正在用Java进行音译,并且一切正常,但是具有匹配的模式会很好。可能吗?

例如:

为GULEVSKAIA姓我生成了这样的模式

(^g+(yu|u|y)l+(io|e|ye|yo|jo|ye)(v|b|w)+(s|c)+(k|c)+a(ya|ia|ja|a|y)(a)*)


我能以某种方式获得实际匹配的信息吗

G

ü



Ë

...

等等

如您所见,有时它不是一个字母。

最佳答案

您可以实现这一点,一旦匹配了模式,就可以使用Matcher类的group()方法检索值为0的经过处理的字符串。然后将该字符串转换为chars数组并打印如下字符

  String line = "gulevskaia";
  String pattern = "(^g+(yu|u|y)l+(io|e|ye|yo|jo|ye)(v|b|w)+(s|c)+(k|c)+a(ya|ia|ja|a|y)(a)*)";


  Pattern r = Pattern.compile(pattern);
  Matcher m = r.matcher(line);

  if (m.find( )) {
     System.out.println("Found value: " + m.group(0) );
     char chars[] =m.group(0).toCharArray();
     for(int i=0;i<chars.length;i++)
         System.out.println(chars[i]);

  }

08-20 03:48