[Java] - 正则表达式应用案例

test.txt有如下内容结构:

1、下列软件属性中,软件产品首要满足的应该是__a____。
    A.功能需求    B.性能需求
    C.可扩展性和灵活性  D.容错纠错能力
2、软件缺陷产生的原因是___D___。
    A.交流不充分及沟通不畅;软件需求的变更;软件开发工具的缺陷
    B.软件的复杂性;软件项目的时间压力
    C.程序开发人员的错误;软件项目文档的缺乏
    D.以上都是
3、导致软件缺陷的最大原因是___a___。
    A.规格说明书    B.设计    C.编码    D.测试

JavaJavaScript相比,不能重复匹配,因此要先分割内容

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+是为了去除选项后的空格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值