了解RegEx和Matcher.find()方法

时间:2015-09-08 08:11:52

标签: java regex

我无法理解此代码的错误以及 .... viewModel: function(params) { this.name = params.name }, .... 方法的作用:

find()

我认为Pattern p = Pattern.compile("a*b+"); Matcher m = p.matcher("ab"); m.find(); // if i comment this the code with throw java.lang.IllegalStateException: No match available String output = String.format("found the text \"%s\" beginning at index %d and end at index %d ",m.group() ,m.start() , m.end()); System.out.println(output); 方法的工作是搜索模式,并在我们搜索的字符串中返回匹配项。任何人都可以解释一下,如果我注释掉find()方法调用,我会收到错误吗?

2 个答案:

答案 0 :(得分:2)

find()正是它应该做的事情。来自javadocs

  

尝试查找输入序列的下一个子序列   匹配模式。

除非您致电group(),否则无法致电find(),因为您找不到匹配项。 find()用于查找匹配的组,然后可以使用group()

进行访问

答案 1 :(得分:1)

正如@TheLostMind所说,除非你调用find(),否则你不能调用组。

使用find()的正确方法是在循环中使用它:

while(m.find()){ //ends when it can't find anything else that matches
   String output = String.format("found the text \"%s\" beginning at index %d and end at index %d ",m.group() ,m.start() , m.end());
   System.out.println(output); 
}