如何确定哪个正则表达式匹配我的字符串?

时间:2011-03-09 16:45:04

标签: java java-ee

我有10个正则表达式和1个字符串,它们可能与这10个正则表达式中的一个完全匹配。有没有人知道一个简单的方法来找出哪个正则表达式(如果有的话)匹配我的字符串?我知道我可以简单地测试每一个字符串,但我想知道是否有一个库,我可以输入正则表达式和字符串,它会告诉我我的正则表达式是否匹配。我需要知道哪个正则表达式匹配,因为每个正则表达式的结果业务逻辑都不同。

3 个答案:

答案 0 :(得分:4)

这是您正在寻找的API。只需为10个表达式中的每个表达式调用它!

public boolean testMatch(String data, String regEx) {
    return data.matches(regEx);
}

让它更通用。

public String testMatch(String data, String... regExs) {
    for(String regEx : regExs) {
        if(data.matches(regEx)) {
            return regEx;
        }
    }

    return null;
}

答案 1 :(得分:0)

试试这个:

String charsequence = "Whatever";
List<Pattern> patterns = null/* Place here all your RegExp*/;

Matcher matcher = null;
for (Pattern p: patterns) {
    matcher = p.matcher(charsequence);
    if (matcher.matches()) {
        // It matches, do stuff
        break;
    }
}

希望它有所帮助。

此致

答案 2 :(得分:0)

根据哪个表达式匹配,看到您将拥有不同的逻辑。我认为你不能避免循环遍历每个选项(或者在每个选项中都有另一个类循环)。

您可以创建具有正则表达式和要执行的操作的类,并将String传递给该类,并让它在匹配时执行操作,而不是确定匹配并使某些开关类似结构确定要执行的操作。