正则查找符合条件的数据

效果如图:

 

 JAVA 代码

public static void main(String[] args) throws Exception {
    String str = "<row PTID=\"80268175\" ZYH=\"2002868\" XM=\"刘云1\" YZLB=\"0\" YSXM=\"王丽\" ZYCH=\"11B40\" CZLX=\"QR\" CXSJ=\"2019-12-12 13:51:17\"/>\n" +
            "<row PTID=\"80268176\" ZYH=\"2002868\" XM=\"刘云2\" YZLB=\"0\" YSXM=\"王丽\" ZYCH=\"11B41\" CZLX=\"TY\" CXSJ=\"2019-12-12 13:51:17\"/>\n" +
            "<row PTID=\"80268176\" ZYH=\"2002868\" XM=\"赵云1\" YZLB=\"0\" YSXM=\"王丽\" ZYCH=\"11B42\" CZLX=\"TY\" CXSJ=\"2019-12-12 13:51:17\"/>\n" +
            "<row PTID=\"80268176\" ZYH=\"2002868\" XM=\"刘云3\" YZLB=\"0\" YSXM=\"王丽\" ZYCH=\"11B43\" CZLX=\"QR\" CXSJ=\"2019-12-12 13:51:17\"/>";
    System.out.println("XML =>\r\n" + str + "\r\n");
    Search("11B40", str);
    Search("刘云", str);
}

/**
 * 打印查询结果
 * @param keyWords
 * @param str
 */
private static void Search(String keyWords, String str) {
    System.out.println("查询关键字 => " + keyWords);
    Pattern pRow = Pattern.compile(".*" + keyWords + ".*");
    Matcher mRow = pRow.matcher(str);
    String result = "";
    while (mRow.find()) {
        String rowStr = mRow.group(0);
        if (StringUtil.isNotEmpty(rowStr)) {
            //方便阅读,瓶贴ID 的获取,不使用公用方法
            Pattern pPTID = Pattern.compile(" PTID=\"(.+?)\"");
            Matcher mPTID = pPTID.matcher(rowStr);
            while (mPTID.find()) {
                result += "瓶贴ID:" + mPTID.group(1) + "\t";
            }
            //将上面瓶贴ID抽成方法
            result += "姓名:" + getFieldValue(rowStr, "XM");
            result += "床号:" + getFieldValue(rowStr, "ZYCH");
            if (rowStr.contains("CZLX=\"QR\"")) {
                result += "状态:取药 \t";
            }
            if (rowStr.contains("CZLX=\"CX\"")) {
                result += "状态:撤销 \t";
            }
            if (rowStr.contains("CZLX=\"TY\"")) {
                result += "状态:退药 \t";
            }
            if (rowStr.contains("CZLX=\"CXTY\"")) {
                result += "状态:撤销退药 \t";
            }
            result += "\t" + getFieldValue(rowStr, "CXSJ");
        }
        result += "\r\n";
    }
    System.out.println(result);
}

/**
 * 获取字段值
 * @param rowStr
 * @param field
 * @return
 */
private static String getFieldValue(String rowStr, String field) {
    String result = "";
    Pattern pXM = Pattern.compile(" " + field + "=\"(.+?)\"");
    Matcher mXM = pXM.matcher(rowStr);
    while (mXM.find()) {
        result += mXM.group(1) + "\t\t";
    }
    return result;
}

 

posted @ 2020-03-12 22:10  VipSoft  阅读(376)  评论(0编辑  收藏  举报