如何使用正则函数提取JSON关键字
如何使用正则函数提取JSON关键字
步骤1:了解正则捕获函数
REGEXP_EXTRACT_NTH(表达式, 模式, 索引)
使用正则表达式模式返回给定字符串的子字符串。子字符串与第n个捕获组匹配,其中模式的每一个括号匹配一个捕获组,其中n为给定索引。
示例: REGEXP_EXTRACT_NTH("abc 123", "([a-z])+\s+(\d+)", 2) = "123"
步骤2:正则规则
提取数值:REGEXP_EXTRACT_NTH(JSON, "\"关键词\":([^},]+)", 1)
提取字符串:REGEXP_EXTRACT_NTH(JSON, "\"关键词\":\"([^},]+)\"", 1)
解释:
1.定位别名称为关键词:后的位置,使用\来进行引号的转义
2.使用特殊字符^忽略数值右侧可能出现的逗号或中括号
3.使用限定符+获取符合规则的所有内容,如果不加,只会返回符合要求的第一个字符
示例:
JOSN:{"url":"http://www.netcharles.com/orwell/essays.htm", "domain":"netcharles.com", "title":"Orwell Essays & Journalism Section - Charles' George Orwell Links", "EDC":8888, "index":2931, "time_created":1345419323, "num_saves":24}
提取字符串:
REGEXP_EXTRACT_NTH(B1, "\"url\":\"([^},]+)\"", 1)
提取数值:
REGEXP_EXTRACT_NTH(B1, "\"EDC\":([^},]+)", 1)
效果:
说明:部分数据源不支持类似的正则函数,比如ClickHouse,这时候我们可以用直通函数RAWSQL来调用这些自定义函数
ClickHouse数据源使用两函数区别:
直通函数:RAWSQL_STR("extract(%1, '\"duration\":([^},]+)')",[data])
正则函数:REGEXP_EXTRACT_NTH(data, "\"duration\":([^},]+)", 1)
关于更多直通函数说明参考:https://study.sf.163.com/documents/read/manual/CalculateFields-RAWSQL_FUNCS-00_RAWSQL_FUNC.md
以上内容对您是否有帮助?