提问人:Dylan Spies 提问时间:10/19/2023 最后编辑:InSyncDylan Spies 更新时间:10/19/2023 访问量:39
如何让我的正则表达式捕获大括号对并在大括号对后停止匹配
How do I get my Regex to capture pairs of curly braces and stop matching after the pair
问:
假设我们正在查看一些文本,如下所示
type vehicle = {
type: 'car' | 'truck',
cylinders: number,
options: string[],
trim: {
upholstery: string,
exteriorColor: string,
gearbox: string
}
}
export {
vehicle
}
我想捕获“type vehicle = {.....}”所以比赛将是
type vehicle = {
type: 'car' | 'truck',
cylinders: number,
options: string[],
trim: {
upholstery: string,
exteriorColor: string,
gearbox: string
}
}
我正在使用这个正则表达式。/type\s*[a-zA-z0-]+\s*=\s*{[\s\S]*}/g
希望它能捕捉到 .好吧,它做得太好了,所以只要以“type name =”开头的东西,它就会继续捕获,并且它可以找到一对大括号。因此,导出语句也被捕获。type name = {
}
我还尝试过使用 /u 进行不贪婪,但无法捕获对象的最后一个大括号。
我相信这部分是问题所在,但我很难找到解决方案{[\s\S]*}
答:
-1赞
DuesserBaest
10/19/2023
#1
如果 JSON 中始终具有这种确切的格式,则可以使用:
^type[\s\S]+?^}
在行的开头从 up 到 a 匹配。type
}
请参见:https://regex101.com/r/vmJs4B/latest
但是,我同意您问题的评论者的观点,即为了普遍解决这个问题,正则表达式不是合适的工具。
评论