检查字符串中是否为id,如果是,则获取值

时间:2015-12-31 20:07:06

标签: java regex match

我试图让正则表达式匹配,然后用它获取值。例如,我想检查1234作为id,如果存在,则获取状态(在这种情况下为0)。基本上它的id:状态。这是我正在尝试的:

String topicStatus = "1234:0,567:1,89:2";
String someId = "1234";
String regex = "\\b"+someId+":[0-2]\\b";
if (topicStatus.matches(regex)) {
    //How to get status?
}

我不仅不知道如何在没有拆分和循环的情况下获得状态,我也不知道为什么它与正则表达式不匹配。

任何帮助将不胜感激。感谢。

2 个答案:

答案 0 :(得分:2)

使用Pattern

String topicStatus = "1234:0,567:1,89:2";
String someId = "1234";
String regex = "\\b"+someId+":[0-2]\\b";

Pattern MY_PATTERN = Pattern.compile(regex);

Matcher m = MY_PATTERN.matcher(topicStatus);
while (m.find()) {
    String s = m.group(1);
    System.out.println(s);
}

这里的关键是在括号中包围你想要的位置[0-2],这意味着它将被保存为第一组。然后,您可以通过group(1)

访问它

答案 1 :(得分:0)

我做了一些假设,你的对子我们总是用逗号分隔,然后用冒号分隔。使用它我刚刚使用split

String[] idsToCheck = topicStatus.split(",");
        for(String idPair : idsToCheck)
        {
            String[] idPairArray = idPair.split(":");
            if(idPairArray[0].equals(someId))
            {
                System.out.println("id    : " + idPairArray[0]);
                System.out.println("status: " + idPairArray[1]);
            }
        }