Javascript 模式匹配以获取括号之间的字符串
我试图找到aggregate()和find()之间的字符串。下面是我的代码Javascript 模式匹配以获取括号之间的字符串,javascript,regex,Javascript,Regex,我试图找到aggregate()和find()之间的字符串。下面是我的代码 var str1 = 'aggregate([{$group:{_id:{state:"$state",city:"$city"},sum:{$sum:"$pop"}}},{$sort:{sum:1}},{$group:{_id:"$_id.state",smallestcity:{$first:"$_id.city"},smallest:{$first:"$sum"},largestcity:{$last:"$_id.
var str1 = 'aggregate([{$group:{_id:{state:"$state",city:"$city"},sum:{$sum:"$pop"}}},{$sort:{sum:1}},{$group:{_id:"$_id.state",smallestcity:{$first:"$_id.city"},smallest:{$first:"$sum"},largestcity:{$last:"$_id.city"},largest:{$last:"$sum"}}}])'
var str2 = 'find({awards:{$elemMatch:{award:"Turing Award",year:{$gt:1980}}}}).limit(0)'
var matchPharse = /((.*))/;
var result = str1.match(matchPharse);
console.log(result);
我得到的结果总是整个字符串,而不是
[{$group:{_id:{state:"$state",city:"$city"},sum:{$sum:"$pop"}}},{$sort:{sum:1}},{$group:{_id:"$_id.state",smallestcity:{$first:"$_id.city"},smallest:{$first:"$sum"},largestcity:{$last:"$_id.city"},largest:{$last:"$sum"}}}]
尝试以下模式:
var matchPharse = /((\[.*\]))/;
你只需要转义外括号。尝试:
var matchPharse = /\((.*)\)/;
对于括号内的内容,请使用result[1]
((\[.*?\]))
您应该使用
非贪婪表达式。尝试以下正则表达式:
var matchPharse= /\((.*)\)/g;
匹配()
之间的任何序列
这是一个很好的例子
var str1='aggregate([{$group:{state:{$state:{$state:{$state,city:$city},sum:{$sum:$pop}}},{$sort:{$sort:{$sum:1},{$group:{{$id:$$state,$$smallestcity:{$first:$$id.city},最小的:{$first:$sum},最大的:{$last:$sum:$city:{$id.city}}
var str2='查找({awards:{$elemMatch:{award:{Turing award,年份:{$gt:1980}})。限制(0)'
var matchPharse=/\(.*)/;
var结果=str1.match(matchPharse);
警报(结果)代码>这将包括parentheses@AvinashRaj我认为OP在“而不是”之后发布了预期输出,如果我在下面的拆分中做错了什么,请纠正我。在},var str={“a”:2000,“b”:“sam”},{“c”:1,“d”:1}var res=str.split(/(?:\},{124;\,{)/);console.log(res[0])/{“a”:2000,“b”:“sam”-一个括号缺少console.log(res[1])/“{“c”:1,“d”:1}”期望输出res 0={“a”:2000,“b”:“}如果在}上使用split sam code>