请教一个正则表达式
将以下内容/**
 *  @public
 *  @import
 *  @name
 */
public var a;
/**
 *  @public
 *  @import
 */
public var b;
/**
 *  @public
 *  @name
 */
public var c;我首先把他们的换行符去掉了,就变成一行
/** *  @public *  @import *  @name */public var a;/** *  @public *  @import */public var b;/** *  @public *  @name */public var c;然后将 /** 到 */ 这两个符号中间的内容取出来,
上面的内容中应该取出三个分组出来,每个分组都是 /** .* */,
但是我只取出一组出来,我用的表达式是(/\*\*)(.*)(\*/)
请问应该怎么写才能成功取出三组出来,谢谢~

解决方案 »

  1.   

    其实你还不如每行读,每行匹配
    当第一次匹配“/**"时,令一个布尔变量 beginFlag = true
    以后每行读时
    如果匹配”**/",beginFlag = false
    否则,把内容读进对应的数组
    重复以上
      

  2.   

    String str = "/** *  @public *  @import *  @name */public var a;/** *  @public *  @import */public var b;/** *  @public *  @name */public var c;";       String regexp = "(/\\*\\*)(.*?)(\\*/)";       Pattern p = Pattern.compile(regexp);
           Matcher m = p.matcher(str);
           
           while(m.find()){
               System.out.println(m.group(2));
           }
    结果:
     *  @public *  @import *  @name 
     *  @public *  @import 
     *  @public *  @name 是要这样不?
      

  3.   


    public static void main(String[] args){
        String str="/** *  @public *  @import *  @name */public var a;/** *  " +
         "@public *  @import */public var b;/** *  @public *  @name */public var c; ";
        Pattern pattern=Pattern.compile("(?<=/\\*\\*).[^\\/]*(?=\\*/)");
        Matcher m=pattern.matcher(str);
        while(m.find()){
         System.out.println(m.group());
         }
    }
      

  4.   

    result:
     *  @public *  @import *  @name 
     *  @public *  @import 
     *  @public *  @name 
      

  5.   

    不知道是不是你想要的public static void main(String[] args){
    String str = "/** *  @public *  @import *  @name */public var a;/** *  @public *  @import */public var b;/** *  @public *  @name */public var c;";
    Pattern p = Pattern.compile("/\\*\\*[^/]*\\*/");
    Matcher m = p.matcher(str);
    while(m.find()){
    System.out.println(m.group());
    }
    }