正则查找符合条件的数据

简介: 正则查找符合条件的数据

效果如图:

 

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;
}
目录
相关文章
|
2月前
|
JavaScript 前端开发 Swift
查找和过滤4
查找和过滤4
35 2
|
3月前
|
索引
【面试题】串联所有单词的子串,找到所有符合条件的串联子串的起始索引
【面试题】串联所有单词的子串,找到所有符合条件的串联子串的起始索引
39 0
|
6月前
查找数据
查找数据。
36 1
|
6月前
过滤多余的字符串
过滤多余的字符串
24 0
|
6月前
|
算法 测试技术 C#
C++算法:字符串中的查找与替换
C++算法:字符串中的查找与替换
|
数据采集 开发者
C#编程-86:正则表达式查找
C#编程-86:正则表达式查找
C#编程-86:正则表达式查找
|
开发者 Python
正则查找相关的方法 | 学习笔记
快速学习 正则查找相关的方法