假设我们正在查看如下所示的文本
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
}
}
我用的是RegEx /type\s*[a-zA-z0-]+\s*=\s*{[\s\S]*}/g
。
希望它能捕获}
之间的type name = {
内容。它在这方面做得有点太好了,所以只要有以“type name =”开头的东西,它就会继续捕获,并且它可以找到对大括号。因此,导出语句也被捕获。
我还尝试了使用/u来表示ungreedy,但这无法捕获对象的最后一个大括号。
我相信这部分是问题所在,但我很难找到解决方案{[\s\S]*}
1条答案
按热度按时间eivgtgni1#
如果JSON中总是使用这种格式,则可以使用用途:
其匹配从
type
直到行开始处的}
。参见:https://regex101.com/r/vmJs4B/latest
然而,我同意你的问题的评论者,为了普遍解决这个问题,正则表达式不是合适的工具。