请教一个正则表达式
将以下内容/**
* @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;然后将 /** 到 */ 这两个符号中间的内容取出来,
上面的内容中应该取出三个分组出来,每个分组都是 /** .* */,
但是我只取出一组出来,我用的表达式是(/\*\*)(.*)(\*/)
请问应该怎么写才能成功取出三组出来,谢谢~
将以下内容/**
* @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;然后将 /** 到 */ 这两个符号中间的内容取出来,
上面的内容中应该取出三个分组出来,每个分组都是 /** .* */,
但是我只取出一组出来,我用的表达式是(/\*\*)(.*)(\*/)
请问应该怎么写才能成功取出三组出来,谢谢~
当第一次匹配“/**"时,令一个布尔变量 beginFlag = true
以后每行读时
如果匹配”**/",beginFlag = false
否则,把内容读进对应的数组
重复以上
Matcher m = p.matcher(str);
while(m.find()){
System.out.println(m.group(2));
}
结果:
* @public * @import * @name
* @public * @import
* @public * @name 是要这样不?
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());
}
}
* @public * @import * @name
* @public * @import
* @public * @name
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());
}
}