开发者社区 问答 正文

为什么这个正则没办法匹配上面的字符串

   String line = "\"string\": \"Hello World\",";
        Matcher m = Pattern.compile("\"(.*)\"\\s?:\\s?\"\\w\"\\s?,?").matcher(line);

请问为什么这个正则没办法匹配上面的字符串?

展开
收起
蛮大人123 2016-03-12 17:09:41 2020 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    你的问题 首先在于没有搞明白什么是 贪婪匹配 ,什么是 懒惰匹配
    你需要匹配的字符串是 "string": "Hello World",
    但你目前的正则是这个 "(.*)"\s?:\s?"\w"\s?,?
    就目前来看,你的正则前半部分 "(.*)"已经完全匹配了所有字符
    所以你可以使用懒惰匹配来实现: "(.*?)"\s*:\s*"(.*?)",?

    2019-07-17 19:01:14
    赞同 展开评论
问答地址: