格式检查
xml 文件主要是由标签构成的。
类似:
请编写一个程序,能够发现其中匹配不完整的标签。
例如:
此时, 标签的匹配就是不完整的。
import java.io.*;
import java.util.*;
import java.util.regex.*;
public class MyA
{
public static void main(String[] args) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream("a.txt")));
String x = "";
for(;;){
String s = br.readLine();
if(s==null) break;
x += s;
}
x = x.replaceAll("\\<[^\\<\\>]+\\/>",""); //删除封闭标签
//匹配某个起始标签或结束标签
Pattern pt = Pattern.compile(
"\\<([a-zA-Z0-9]+)( +[^\\<\\>]*)?\\>|\\</([a-zA-Z0-9]+)\\>");
Stack<String> stk = new Stack<String>();
boolean tag = true; // 假设匹配
Matcher m = pt.matcher(x);
while(m.find()){
if(m.group(1) != null) stk.push(m.group(1));
if(m.group(3) != null){
if(stk.isEmpty()){
tag = false;
break;
}
if(stk.pop().equals(m.group(3))==false){
tag = false;
break;
}
}
}
if(stk.isEmpty()==false) tag = false;
System.out.println(tag);
}
}