从字符串中过滤掉 UUId 编号
Filtering out UUId number from a string
我只想将具有 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
我错过了什么?
您忘记了对 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
return 是上一个匹配的结果,但是直到你调用 find
之前还没有匹配发生,所以它没有结果到 return。
我只想将具有 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
我错过了什么?
您忘记了对 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
return 是上一个匹配的结果,但是直到你调用 find
之前还没有匹配发生,所以它没有结果到 return。