在java正则表达式中获取匹配的模式值

时间:2016-09-30 05:59:11

标签: java regex

我正在用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)*)

我可以以某种方式获取实际匹配的信息

û

1

ë

...

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

1 个答案:

答案 0 :(得分:1)

一旦模式匹配,你可以实现这一点,使用Matcher类的group()方法将0传递为值来检索macthed字符串。然后将该字符串转换为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]);

  }