我想僅將具有 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 回答

開心每一天1111
TA貢獻1836條經驗 獲得超13個贊
您忘記了撥打 的電話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還沒有發生任何匹配,因此它沒有可返回的結果。
添加回答
舉報
0/150
提交
取消