正则表达式贪婪匹配和非贪婪匹配

在做一个简单的Lexer时遇到的一个问题,需求是使用正则表达式去匹配mongodb查询语句中的JSON对象,例如find({}).forPurpose({}),一开始使用的正则是{.*},这样其实默认是贪婪模式,会尽量匹配长的子串,所以会匹配到{}).forPurpose({},所以在这里应该使用非贪婪模式{.*?},也就是在量词后面再加一个?即可。

目录