java正则表达式显示中间结果

时间:2011-12-15 09:19:51

标签: java

你如何展示所有比赛?例如我有一个字符串“你好世界,你好吗”。 在这里,我必须获得字母'a'所在的所有位置。为此,我编写了一个示例java程序。但是这里只有start()和end()方法可用于匹配器。我如何获得中间结果?请解释一下..

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTestStrings {


 public static void main( String args[] ){


      String line = "Hello world and how are you a";
      String pattern = "[a]";      
      Pattern r = Pattern.compile(pattern);     
      Matcher m = r.matcher(line);
              if (m.find( )) {
        System.out.println(m.start());          
        System.out.println(m.end());


      } else {
         System.out.println("No result foud");
      }
   }
}

2 个答案:

答案 0 :(得分:4)

你可以多次拨打matcher.find(),它会返回下一次出现。因此,只需将if替换为while,并在matchesFound块内使用设置为true的布尔标记while,以便能够打印消息如果没有匹配。

答案 1 :(得分:2)

m.start()m.end()将为您提供匹配器的起始索引和匹配器的结束索引。不匹配的值。你可以像这样打印所有匹配的。

while(m.find( )) {
        System.out.println(m.start());          
        System.out.println(m.end());
        System.out.println(m.group());
      }