您的位置:程序门 -> java -> j2se / 基础类



regex的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


regex的问题
发表于:2007-03-30 14:23:39 楼主
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个啊;另外*的匹配到底是怎么进行的?
发表于:2007-03-30 14:33:031楼 得分:0
*是匹配0个或多个,所以匹配到索引6去,用+就可以
发表于:2007-03-30 14:44:132楼 得分:0
1对应a
2对应b
3对应34
5对应e
6对应f

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

我去年考的scjp,现在忘了些,我也做过这题,当时也很晕
发表于:2007-03-30 14:51:093楼 得分:0
如果1对应a
那为什么输出是
0   0
1   1
2   4
4   4
5   5
6   6
呢?
发表于:2007-03-30 14:54:004楼 得分:0


"34 "


发表于:2007-03-30 14:55:375楼 得分:0
a         b         3         4         e       f
  0         1         2         3         4         5       6
发表于:2007-03-30 14:56:096楼 得分:0
a         b         3         4         e       f
  0         1         2         3         4         5       6
发表于:2007-03-30 14:59:087楼 得分:0
\d*应该是匹配数字或者空串吧,但是上面第一次匹配的时候,匹配内容是空串,但是把第一个字符“a”吃掉了,是为什么呢?
发表于:2007-03-30 15:00:568楼 得分:0
6指向什么了,那没东西了啊,怎么还能算匹配上了呢
发表于:2007-03-31 14:33:329楼 得分:0
顶下。。
发表于:2007-03-31 14:41:5510楼 得分:0

      a         b         3         4         e       f
  0         1         2         3         4         5       6
发表于:2007-03-31 14:43:1411楼 得分:0
areslp(努力ing)   (   )   信誉:100         blog     2007-3-30   14:59:09     得分:   0    
       
\d*应该是匹配数字或者空串


      areslp(努力ing)   (   )   信誉:100         blog     2007-3-30   15:00:56     得分:   0    
 
  6指向什么了,那没东西了啊,怎么还能算匹配上了呢

    =======
???
 

 
发表于:2007-03-31 14:44:0312楼 得分:0
6指向什么了,那没东西了啊,怎么还能算匹配上了呢..ls的,能解释下不?
发表于:2007-03-31 14:50:5413楼 得分:0
你是说匹配的空串?
那为什么前面匹配空串的时候还要把a,b这些给跳过去啊


快速检索

最新资讯
热门点击