String line = "\"string\": \"Hello World\",";
Matcher m = Pattern.compile("\"(.*)\"\\s?:\\s?\"\\w\"\\s?,?").matcher(line);
请问为什么这个正则没办法匹配上面的字符串?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
你的问题 首先在于没有搞明白什么是 贪婪匹配 ,什么是 懒惰匹配
你需要匹配的字符串是 "string": "Hello World"
,
但你目前的正则是这个 "(.*)"\s?:\s?"\w"\s?,?
就目前来看,你的正则前半部分 "(.*)"已经完全匹配了所有字符
所以你可以使用懒惰匹配来实现: "(.*?)"\s*:\s*"(.*?)",?