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

问题描述:

     String line = "\"string\": \"Hello World\",";
        Matcher m = Pattern.compile("\"(.*)\"\\s?:\\s?\"\\w\"\\s?,?").matcher(line);
    请问为什么这个正则没办法匹配上面的字符串 

你的问题 首先在于没有搞明白什么是 贪婪匹配 ,什么是 懒惰匹配

你需要匹配的字符串是 "string": "Hello World",
但你目前的正则是这个 "(.*)"\s?:\s?"\w"\s?,?

就目前来看,你的正则前半部分 "(.*)"已经完全匹配了所有字符

所以你可以使用懒惰匹配来实现: "(.*?)"\s*:\s*"(.*?)",?

 目测你的\",这个不行,java转义成",而正则需要继续转义。
.*修改为[^\"]*


这个应该是\w的原因吧

如果你还是没搞明白我所说的,建议你好好看看这篇blog:
正则基础之——贪婪与非贪婪模式 http://blog.csdn.net/lxcnn/article/details/4756030