我尝试从字符串“{”travelzoo\u hotel\u name“:”graduate minneapolis“,”travelzoo\u hotel\u id“:”223“,”city“:”minneapolis“,”country“:”usa“,”sales\u manager“:”stephen conti“}中获取城市的名称,我尝试以下regexp:
SELECT REGEXP_SUBSTR('{\"travelzoo_hotel_name\":\"Graduate Minneapolis\",\"travelzoo_hotel_id\":\"223\",\"city\":\"Minneapolis\",\"country\":\"USA\",\"sales_manager\":\"Stephen Conti\"}'
,'(?:.city...)([[:alnum:]]+)');
我有: '"city":"Minneapolis'
我只需要城市名称: Minneapolis
. 如何在查询中使用组?
我在regex101中的例子请帮助我
1条答案
按热度按时间ocebsuys1#
我假设您使用的是mysql 8.x,它使用icu regex表达式。
看起来您要处理的字符串是json。你可以用
JSON_EXTRACT
与JSON_UNQUOTE
和一个'$.city'
作为json路径:会回来的
Minneapolis
.在regex中,非捕获组模式仍然是匹配的,并附加到匹配值中。”非捕获”仅意味着没有单独的内存缓冲区分配给使用分组结构捕获的文本。所以,你可以用
'(?<="city":")[^"]+'
图案在哪里(?<="city":")
是一个积极的回顾"city":"
但不会将其放入匹配值中。输出中只有与匹配的文本[^"]+
,1+个字符,除"
.