test.txt
有如下内容结构:
1、下列软件属性中,软件产品首要满足的应该是__a____。
A.功能需求 B.性能需求
C.可扩展性和灵活性 D.容错纠错能力
2、软件缺陷产生的原因是___D___。
A.交流不充分及沟通不畅;软件需求的变更;软件开发工具的缺陷
B.软件的复杂性;软件项目的时间压力
C.程序开发人员的错误;软件项目文档的缺乏
D.以上都是
3、导致软件缺陷的最大原因是___a___。
A.规格说明书 B.设计 C.编码 D.测试
Java
与JavaScript
相比,不能重复匹配,因此要先分割内容
File text = new File("test.txt");
FileInputStream stream = new FileInputStream(text);
StringBuffer buffer = new StringBuffer();
byte[] tmp = new byte[512];
int i = stream.read(tmp);
while ( i != -1){
buffer.append(new java.lang.String(tmp,"GB2312"));
i = stream.read(tmp);
}
// System.out.println(buffer);
String[] p = Pattern.compile("\\d{1,2}、").split(buffer);
每题试题都被分隔出来,然后对各部分进行正则表达式匹配,同时通过捕获组提取内容
Pattern pattern = Pattern.compile("(\\D*?)_+([a-d|A-D])_+(\\D*?)\\s+" +
"A.(\\D*?)\\s+B.(\\D*?)\\s+C.(\\D*?)\\s+D.(\\D*?)\\s+");
for (i=1;i<p.length;i++){
System.out.println(p[i]);
Matcher m = pattern.matcher(p[i]);
if (m.find()){
for (int j = 1;j<=m.groupCount();j++){
System.out.println(m.group(j));
}
}
else {
System.out.println("fail");
}
}
\\s+
是为了去除选项后的空格