【发布时间】:2016-06-03 20:50:49
【问题描述】:
使用正则表达式,给定以下文本,如何匹配平衡方括号之间的内容,但前提是不为空?
{
"key1": [
{
"key2": "",
"key3": "",
"key4": "",
"key5": []
}
],
"key6": [
{
"key7": "",
"key8": "",
"key9": [
{
"key10": "",
"key11": "",
"key12": "",
"key13": []
}
],
"key14": ""
}
],
"key15": [],
"key16": []
}
/\[([\s\S]+)\]/g:这是我的尝试,我的想法是匹配第一个和最后一个括号,但这不起作用,因为我们不想匹配空括号,即[]。它也不平衡,因此它不正确地匹配key1 的左方括号和key16 的右方括号。
应该匹配key1 的左括号和右括号(即平衡)。因为我们不想匹配空的[],所以我们必须保持平衡,否则我们将匹配错误的开始和结束括号。
我要解决的实际问题是删除 [ ] 如果不为空。此正则表达式将在代码中递归运行,以便它不断删除括号,直到找不到更多匹配项。我确实想在 RegEx 中递归地应用它,但无法解决。
生成的文本应如下所示:
{
"key1": {
"key2": "",
"key3": "",
"key4": "",
"key5": []
},
"key6": {
"key7": "",
"key8": "",
"key9": {
"key10": "",
"key11": "",
"key12": "",
"key13": []
},
"key14": ""
},
"key15": [],
"key16": []
}
您可以在这里查看和使用我的正则表达式: https://regex101.com/r/bE0jM5/5
提前致谢
【问题讨论】:
-
有什么理由拒绝投票?