当前位置: 首页 > 知识库问答 >
问题:

使用正则表达式在JSON文件中提取和创建属性

欧阳博超
2023-03-14

我有以下JSON文件。文件中的点是以下内容:

"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>"
}

使用RegEx,我想提取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文本。

^("Description":").*?<td>CCGcode<\/td><td>([^<>\n]*).*$

上面选择了代码,但不确定如何让它创建属性。

共有2个答案

鄢禄
2023-03-14

有一个非常简单但不那么优雅的解决方案。代替

"Description":.*?<td>CCGcode<\/td><td>([A-Z\d]*)<\/td>

"CCGCode":"\1",\n    \0

不知道Supreme如何处理替换,但您可能必须将替换\0\1更改为其他内容,例如$0$1

它所做的是找到description ption条目和下面的CCGCode条目,将代码捕获到捕获组1中。

然后用新的CCGCodeJSON标记加上原始文本替换捕获组0——整个匹配文本。

这是一个非常脆弱的解决方案,但它适用于您的示例案例。

在regex101上查看示例。

当做

司空镜
2023-03-14

试试这个

( *)"Description".*?CCGcode.*?<td>([^<]+)

正则表达式演示

这一个用于sublimitext3

找到什么:

( *)("Description".*?CCGcode.*?<td>)([^<]+)

替换为:

\1"CCGcode": "\3",\n\1\2

演示

 类似资料:
  • 问题内容: 我有这样的字符串: 而且我只需要使用regexp的href值提取: 每次的href值也可以不同,可以更长或更短 问题答案: 假设myString包含带有元素的字符串。 由于href属性不能嵌套,因此应该没问题,并且不需要完整的HTML解析器。一个限制是它只能在双引号中找到href属性。

  • 问题内容: 我正在尝试提取锚标记()的属性。到目前为止,我有这个表达: 适用于像 和(单引号) 但不适用于不带引号的字符串: 如何修改我的正则表达式,使其与不带引号的属性一起使用?还是有更好的方法来做到这一点? 更新: 谢谢您到目前为止的所有好评和建议。 我没有提到一件事:很遗憾,我必须修补/修改不是由我编写的代码。而且没有时间/金钱从头开始重写这些东西。 问题答案: 如果你有一个像 此正则表达式

  • 问题内容: 我有一些粗略的字符串: 我想使用Java Regex类提取[some number]中的文本。 我大致知道我想使用什么正则表达式(尽管欢迎所有建议)。我真正感兴趣的是Java调用以获取正则表达式字符串并将其用于源数据以产生[some number]的值。 编辑:我应该补充一点,我只对单个[一些数字](基本上是第一个实例)感兴趣。源字符串很短,我不会寻找[some number]的多次出

  • 句子的输入列表: 所需输出: 是否有一种方法可以使用内置或第三方标记器使用提取引用(可以以单引号和双引号显示)? 我曾尝试使用tokenizer作为值提供单引号和双引号,但结果与预期相差甚远,例如: 有类似这样和这样的线程,但它们都建议使用基于正则表达式的方法,但是,我很好奇这是否只能用来解决-听起来像是自然语言处理中的常见任务。

  • 问题内容: 我只是想使用jmeter提取json响应数据,但不能这样做。 我得到类似的东西。 我正在尝试但无法获得。 谁能帮我使这个工作正常? 问题答案: 外观在响应中是否唯一(仅出现一次)? 如果是这样,您可以简单地使用正则表达式提取器添加到HTTP请求中,该请求器返回json响应,并带有如下正则表达式: `` 并将进一步提取的值称为。 但是,如果您的情况更加复杂,并且在json响应中出现了几种

  • 问题内容: 我想从一般的HTML页面中提取所有文本(是否显示)。 我想 删除 任何HTML标记 任何JavaScript 任何CSS样式 是否有一个正则表达式(一个或多个)可以实现? 问题答案: 您不能真正用正则表达式解析HTML。太复杂了。RE根本无法正确处理部分。此外,某些常见的HTML之类的东西将在浏览器中作为适当的文本工作,但可能会使天真的RE感到困惑。 有了合适的HTML解析器,您会更快