
如上圖所示,如何去掉注釋呢?
@test
public void test_deletecommen(){
string input="b<!-- step的屬性seq是 從1 開始的正整數 -->a";
system.out.println(input.replaceall("<!--[^<>]*-->", ""));
}
運作結果:
達到預期效果了.
但是
string input="b<!-- >step的屬性seq是 從1 開始的正整數 -->a";
沒有達到預期的結果,為什麼呢?因為注釋中多了>
如何解決呢?
public void test_deletecomment2(){
string regex="<!--"+valuewidget.otherwise22("-->")+"-->";
system.out.println(input.replaceall(regex, ""));
ba
達到預期了.
方法otherwise22 的實作如下:
/***
* 不包含
* @param regex
* @return
*/
public static string otherwise22(string regex){
int length=regex.length();//共有length * length種情況
string[][] arr2=new string[length][];
for(int i=0;i<length;i++){
string[] arr3=new string[2];
arr3[0]=string.valueof(regex.charat(i));
// if(arr3[0].equals("*")){
// arr3[0]="\\*";
// }
arr3[1]="[^"+arr3[0]+"]";
// system.out.println(arr3[0]+" "+arr3[1]);
arr2[i]=arr3;
}
// string[]result=new string[2^3];
// for(int i=0;i<length;i++){
// result[i]=arr2[i][0];
// }
// \u4e00-\u9fa5 是為了比對漢字
string normal="[\\w\u4e00-\u9fa5\\s\"']*?";
list<stringbuffer> list33=assemble(arr2,true);
int length22=list33.size();
stringbuffer sbu=new stringbuffer("(");
for(int i=1;i<length22;i++){
sbu.append(normal).append(list33.get(i)).append(normal);
if(i!=length22-1){
sbu.append("|");
}
sbu.append(")");
// system.out.println(list33);
return sbu.tostring();
*
* @param a
* @param aa
* @param index : 初始值為0
private static list<stringbuffer> cc(string[][] aa,int index,list<stringbuffer> list,boolean isdealregex){
if(index>=aa.length){//說明已經周遊完成
return list;//并不是每次循環都會執行,最後才會執行此語句.
string cc[]=aa[index];
int length=cc.length;
list<stringbuffer> listnew=new arraylist<stringbuffer>();
if(list==null||list.size()==0){//首次循環
for(int i=0;i<length;i++){//必須保證順序,是以不能使用 foreach
if(isdealregex && cc[i].equals("*")){
cc[i]="\\*";
}
if(isdealregex){
listnew.add(new stringbuffer(cc[i]+"?"));
}else{
listnew.add(new stringbuffer(cc[i]));
}else{
for(int j=0;j<list.size();j++){//必須保證順序,是以不能使用 foreach
stringbuffer sb=list.get(j);
stringbuffer sb2=new stringbuffer(sb);
if(isdealregex && cc[i].equals("*")){
cc[i]="\\*";
}
if(isdealregex ){
sb2.append(cc[i]+"?");
}else{
sb2.append(cc[i]);
listnew.add(sb2);
list<stringbuffer> list33=cc(aa, ++index, listnew,isdealregex);
if(!valuewidget.isnullorempty(list33)){
return list33;
return null;
/***
* 組合
public static list<stringbuffer>assemble(string[][] aa,boolean isdealregex){
return cc(aa, 0, null,isdealregex);
源代碼見附件io0007-find_progess-0.0.8.5-snapshot-sources.jar