读书人

regex的有关问题

发布时间: 2011-12-29 22:09:38 作者: rapoo

regex的问题
package scjp.chapter6;

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

public class Regex2 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Pattern p = Pattern.compile( "\\d* ");
Matcher m = p.matcher( "ab34ef ");
boolean b = false;
while (b = m.find()) {
System.out.println(m.start() + " " + m.end());
}
}
}
这个匹配的时候为什么会匹配到索引6去呢,匹配的字符串一共才6个啊;另外*的匹配到底是怎么进行的?

[解决办法]
*是匹配0个或多个,所以匹配到索引6去,用+就可以
[解决办法]
1对应a
2对应b
3对应34
5对应e
6对应f

*的匹配看这月的程序员,写的非常好,简单说是因为正则用的NFA,因此在匹配时,正则式不动,扫描字符串,这样3和4都会匹配,然后扫描到e,发现不匹配退回.

我去年考的SCJP,现在忘了些,我也做过这题,当时也很晕
[解决办法]


"34 "


读书人网 >J2SE开发

热点推荐