Pattern p = Pattern.compile("/\\*.*\\*/|\'.+\'|(\\++|\\--|\\>=|\\<=)|\\d+\\.\\d*|\\w+|\".+\"|\\S");    从网上找了一段源码,关于Java实现的词法分析器,运行正常,但无法匹配注释和空行。其中的正则表达式如上所示,小弟不明其意,望哪位大哥大姐赐教,详细解释下上述正则表达式中的意思。
    我也曾专门补习了解了下正则表达式,但与此还有所区别,仍不明白这里的这条是何意思。越详细越好哈,谢谢了~
    

解决方案 »

  1.   

    |表示或,所以这段正则表示可以匹配多种字符串
    ..下面表示任意
    /\\*.*\\*/            ----   /* .. */
    \'.+\'                ----   ' .. '
    (\\++|\\--|\\>=|\\<=) ----   多个+或者两个--或者<=
    \\d+\\.\\d*           ----   带小数点的数字  123.33 小数点后面的数字可以从0个到多个
    \\w+                  ----   多个数字和字母
    \".+\"                ----   " .. "
    \\S                   ----   [^\t\n\r\f]
      

  2.   

    哈哈,没事,都有肉吃,还是太谢谢了。
    下午我也终于看出了大部分:
    /\\*.*\\*/: 即/*...*/注释(因*为特殊符号,故前加\\以转义,匹配单行/*..*/注释
    \'.+\':      即单引号中的内容
    \\d+\\.\\d*:即带小数点的数字123.33,小数点后面的数字可以从0个到多个,匹配数字(包括整数和小数,但未指明指数形式)
    \\w+:        即多个字符(构成单词的数字或字母),匹配单词
    \".+\":      即双引号中的内容,匹配字符串
    \\S":        即一个非空字符,匹配单目特殊符号上面这几个懂了,放程序里也能理解,但下面这几个(即:\\++|\\--|\\>=|\\<=) 还不太理解,它们放在程序里究竟是匹配哪些内容的?
    \\++:前面两个\\转义+,第二个+表至少重复一次,--,>=和<=前面的\\是什么意思呢?
    程序用以进行词法分析,它们能揪出哪些代码呢?我现在的理解是,对于一段代码,它无非就是由“注释+空格+数字+标识符+单目特殊符号(如:?,@等)+双目特殊符号(如:<=,==等)+字符串”等组成,因此用该正则表达式来分析,但其中单引号之中的内容(可不止一个字符)指的是哪一项啊?也可能我想的不周到,还请大家指正。3Q~
      

  3.   

    回复4楼,您一定有好的正则表达式以匹配有效代码吧?垂涎ing...