【问题标题】:Extract and Create Property in JSON file with RegEx使用 RegEx 在 JSON 文件中提取和创建属性
【发布时间】: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

标签: json regex replace find sublimetext3


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-29
    • 2020-01-16
    • 2015-07-12
    • 2021-10-14
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多