String line = "\"string\": \"Hello World\",";
Matcher m = Pattern.compile("\"(.*)\"\\s?:\\s?\"\\w\"\\s?,?").matcher(line);
請問為什麼這個正則沒辦法匹配上面的字符串
你的問題 首先在於沒有搞明白什麼是 貪婪匹配
,什麼是 懶惰匹配
你需要匹配的字符串是 "string": "Hello World",
但你目前的正則是這個 "(.*)"\s?:\s?"\w"\s?,?
就目前來看,你的正則前半部分 "(.*)"
已經完全匹配了所有字符
所以你可以使用懶惰匹配來實現: "(.*?)"\s*:\s*"(.*?)",?