regex 我如何让我的正则表达式捕获花括号对,并停止匹配后,对

vdgimpew  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(121)

假设我们正在查看如下所示的文本

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]*}

eivgtgni

eivgtgni1#

如果JSON中总是使用这种格式,则可以使用用途:

^type[\s\S]+?^}

其匹配从type直到行开始处的}
参见:https://regex101.com/r/vmJs4B/latest
然而,我同意你的问题的评论者,为了普遍解决这个问题,正则表达式不是合适的工具。

相关问题