<tr>
<td>Cobertura Coverage Report</td>
<td data="009.90">
<table class="percentgraph" cellpadding="0px" cellspacing="0px">
<tr class="percentgraph">
<td width="40" class="data">10%</td>
<td class="percentgraph"><div class="percentgraph">
<div style="width: 9.895833px;" class="greenbar">
<span class="text">38/384</span></div>
</div>
</td>
</tr>求大神给个正则表达式 匹配出<td data="009.90"></td>这个标签及其中所有内容。 T T
<td>Cobertura Coverage Report</td>
<td data="009.90">
<table class="percentgraph" cellpadding="0px" cellspacing="0px">
<tr class="percentgraph">
<td width="40" class="data">10%</td>
<td class="percentgraph"><div class="percentgraph">
<div style="width: 9.895833px;" class="greenbar">
<span class="text">38/384</span></div>
</div>
</td>
</tr>求大神给个正则表达式 匹配出<td data="009.90"></td>这个标签及其中所有内容。 T T
<td data="009.90">.....</td>
之间嵌套的表格的层级。
如果这段是个jsp文件,那用jquery里的方法可以做。
如果这段是个String,那用substr加indexof 和lastindexof是不是可以考虑下。
public static void main(String[] args) {
String s = "(((520+480)*38/10)/2*((520+480)*38/10)/2)) ";
List<Char> list = new ArrayList<Char>();
do{
s = getString(s, list);
}while(s != null && s.indexOf("(") != -1);
for(Char c : list){
System.out.println(c.str.substring(c.startIndex, c.endIndex + 1));
}
}
public static String getString(String str, List<Char> list){
char[] cs = str.toCharArray();
boolean isStart = false;
Char ch = new Char();
ch.str = str;
for(int i = 0; i < cs.length; i++){
char c = cs[i];
if(c == '('){
if(!isStart){
ch.startIndex = i;
isStart = true;
}
ch.layer++;
}else if (c == ')' && ch.layer > 0){
ch.layer--;
if(ch.layer == 0){
ch.endIndex = i;
list.add(ch);
if(i != cs.length - 1){
String last = str.substring(i + 1);
do{
last = getString(last, list);
}while(last != null && last.indexOf("(") != -1);
}
break;
}
}
}
if(ch.endIndex != 0){
return str.substring(ch.startIndex + 1, ch.endIndex);
}
return null;
}}
class Char{
int startIndex;
int endIndex;
int layer;
String str;
}