从字符串中过滤出UUId号码

时间:2019-09-17 21:43:13

标签: java regex uuid

我只想将具有UUID号的字符串过滤出一个新字符串 例如:

02bfa116-c834-4896-b825-e8f1299319f9,8.1.0,2888F244914F75CD68DC70A11B71BF0420F,panos

预期:获取一个包含该值'02bfa116-c834-4896-b825-e8f1299319f9'的新字符串

到目前为止我已经尝试过的:

final String regex = "[a-f0-9]{8}(-[a-f0-9]{4}){4}[a-f0-9]{8}";
        final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
        for(int i=0;i<arr.length;i++){
            Matcher matcher = pattern.matcher(arr[i]);
            contentCSVStr[i] = matcher.group();
        }

数组中的每个字符串都可以采用我在上面的示例中给出的格式。

运行此代码时,我会得到

java.lang.IllegalStateException: No match found

我想念什么?

1 个答案:

答案 0 :(得分:4)

您忘了打给Matcher.find的电话了。

将代码更改为此:

final String regex = "[a-f0-9]{8}(-[a-f0-9]{4}){4}[a-f0-9]{8}";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
for(int i=0;i<args.length;i++){
    Matcher matcher = pattern.matcher(args[i]);
    matcher.find(); // <- This line needed to be added
    contentCSVStr[i] = matcher.group();
}

它将正确提取UUID。

group返回上一场比赛的结果,但是直到您致电find为止,还没有比赛发生,因此没有返回结果。