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