使用 RegEx 在 JSON 文件中提取和创建属性
Posted
技术标签:
【中文标题】使用 RegEx 在 JSON 文件中提取和创建属性【英文标题】:Extract and Create Property in JSON file with RegEx 【发布时间】:2016-08-11 06:46:04 【问题描述】:我有以下JSON file。文件中点缀着以下内容:
"properties":
"Name": "Darlington",
"Description": "<br><br><br> <table border=\"1\" padding=\"0\"> <tr><td>CCGcode</td><td>00C</td></tr> <tr><td>CCGname_short</td><td>Darlington</td></tr>"
使用正则表达式,我想提取 CCG 代码属性并将其添加回来,这样上面就变成了:
"properties":
"Name": "Darlington",
"CCGcode": "00C",
"Description": "<br><br><br> <table border=\"1\" padding=\"0\"> <tr><td>CCGcode</td><td>00C</td></tr> <tr><td>CCGname_short</td><td>Darlington</td></tr>"
我已经尝试了各种方法,但我无法让它工作。我正在使用 Sublime Text。
^("Description":").*?<td>CCGcode<\/td><td>([^<>\n]*).*$
上面选择了代码,但不确定如何获取它来创建属性。
【问题讨论】:
什么你试过了吗? 更新了问题。感谢@ClasG 【参考方案1】:有一个非常简单但不那么优雅的解决方案。替换
"Description":.*?<td>CCGcode<\/td><td>([A-Z\d]*)<\/td>
与
"CCGCode":"\1",\n \0
不知道 Sublime 如何处理替换,但您可能需要将替换 \0
和 \1
更改为其他内容 - 例如$0
和 $1
。
它的作用是找到 Description
条目和下面的 CCGCode
条目,将代码捕获到捕获组 1。
然后用新的CCGCode
JSON 标记加上原始文本替换捕获组 0 - 整个匹配的文本。
这是一个非常脆弱的解决方案,但它适用于您的示例案例。
Check out example at regex101.
问候
【讨论】:
Check this question.。显然机器人\1
和$1
应该可以工作:)
这也行得通,但是(00C)
需要被概括,以便它适用于所有CCGcodes
。 +1解释。谢谢
当然,我的马虎。这就是意图;)更正了答案。【参考方案2】:
试试这个
( *)"Description".*?CCGcode.*?<td>([^<]+)
Regex demo
这个给sublimetext3
找到什么:
( *)("Description".*?CCGcode.*?<td>)([^<]+)
替换为:
\1"CCGcode": "\3",\n\1\2
Demo
【讨论】:
以上是关于使用 RegEx 在 JSON 文件中提取和创建属性的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP 正则表达式从 html 中提取 JSON 对象
使用 c++/boost::regex 提取 HTML 文件的特定部分
如何将 JSON 中的值替换为 RegEx 在使用 Python 的文件中找到的值?