首页 > 解决方案 > 如何使用正则表达式检查多个字符串之间的特定字符串?

问题描述

我有以下字符串:

(...)
<TEST NAME="KBC1" ID="0034" PRA="RUNNING DOG" />
<TEST NAME="KBC2" ID="0264" PRB="STANDING CAT" />
<TEST NAME="KBC1" ID="4632" TEM="HAPPY DOG" />
<TEST NAME="KBC6" ID="4492" LST="FLYING BIRD" />
(...)

仅当NAME="KBC1"和 TEM="(..)" 包含单词 HAPPY时,程序才应检查单词 DOG 。第三行也是如此。它部分适用于以下模式:

Pattern p1 = Pattern.compile("<TEST NAME="KBC1"(.*)\/>");

如何在不创建两个模式的情况下包含检查 TEM="(...)" 是否包含单词“DOG”的案例?

标签: javaregex

解决方案


我希望这个基本代码能解决你的查询。

String input="<TEST NAME=\"KBC1\" ID=\"4632\" TEM=\"HAPPY DOG\" />";
        
        String regex = "^(?=.*\\bTEST NAME\\b)(?=.*\\bKBC1\\b)(?=.*\\bTEM\\b)(?=.*\\bHAPPY\\b)(?=.*\\bDOG\\b).*$";
        
        if(Pattern.matches(regex, input)) {
            System.out.println("match");
        }else {
            System.out.println("unmatch");
        }
        

推荐阅读