-3

如何使用正则表达式从 json 有效负载中获取所需的格式文本输出

"number" : 4aac4c35-8e3e-4730-8364-381884d6f20f:OP:QUAL:117804471:PON:false

得到如下输出的表达式是什么

"number" : 117804471

能否请你帮忙。

我尝试了以下方法;但它没有用;我是新手。

([\"]token[\"][\s]*:[\s]*)?([0-9]{9})
4

2 回答 2

2

是的,正如@PJProudhon 所说,我们缺乏帮助您的精确度。

如果您只想提取数字而不使用某些捕获组,则可以使用以下正则表达式:(?<=:)\d+(?=:\w+:(?:true|false))

快速解释:

  • (?<=:)是寻找:字符的积极回溯。
  • \d+就是得到一个至少1位小数或更多的数字。
  • (?=:\w+:(?:true|false))是查找 a :、单词、a:然后 true或的正向前瞻false

这里有多个值的小测试:https ://regex101.com/r/1nRnct/2

希望这可以帮到你。

于 2020-01-24T11:26:53.440 回答
1

仍然不太确定您究竟想要或需要什么,但让我们根据您在此处和示例中编写的内容进行尝试。

收到一些关于以下内容的字符串:

  • 以双引号括起来的标记开头。
  • 后跟一个冒号,偶尔会被任意数量的空格字符包围。
  • 后面是一组冒号分隔的标记。
  • 其中一个仅由数字组成。

尝试仅通过以下方式替换该输入:

  • 双引号括起来的标记。
  • 后跟一个冒号,周围有空格。
  • 紧随其后的是仅数字标记。

然后,您可以使用以下模式来获取匹配项:^(?<token>"[^"]+"\s*:\s*)(?:\d*[^\d:][^:]*:)*(?<number>\d+)(?::[^:]*)*$.

然后应使用以下内容替换:$1$2

演示在这里

当了解其他规则时,这可能会被简化或调整。

于 2020-01-24T11:15:05.180 回答