【发布时间】:2017-09-02 23:02:36
【问题描述】:
我正在尝试提取部分 json 消息,但未能编写正确的正则表达式。
最大的问题是我正在为其编写的应用程序(Impala - 大数据查询引擎)包含一个使用 ? 阻止非贪婪操作的错误,因此我需要一个不同的解决方案。
例子
{"postcode":"ABCDEF","forename":"James","id":"{12}","surname":"Townsend"},
{"postcode":"HIJKLM","forename":"Toby","id":"{34}","surname":"Taylor"},
{"surname":"Reilly","postcode":"NOPQRS","forename":"Mike","id":"{56}"}
数据将采用这种格式,全部放在一个字符串中(无换行符),但在每个“部分”内,数据可以按任何顺序排列。
我需要使用正则表达式来结束消息中名字为“Toby”的部分
{"postcode":"HIJKLM","forename":"Toby","id":"{34}","surname":"Taylor"}
目前我有
{[^{]*"forename":"Toby"[^}]*}
但这不起作用,我需要它来匹配 {" 和 "} 作为开始和结束。
任何人都可以就如何做到这一点提供建议吗?
谢谢
【问题讨论】:
-
闻起来像 X/Y 问题。这看起来(有点)格式良好的 json。根据所使用的语言(您不会告诉我们您是在例如 javascript 函数还是 C# 方法中进行正则表达式),加载和迭代 json 对象可能会更好,只需检查 forename 属性.
-
我正在使用 Impala 查询引擎,它在 sql 语句中包含一个“regexp_extract”方法。语法是 regexp_extract(string initial, string pattern, string replacement) - 链接cloudera.com/documentation/enterprise/5-9-x/topics/…
-
但是我目前正在使用这个网站来尝试让它最初工作regex101.com
标签: regex regex-lookarounds impala regex-greedy regex-group