首页 > 解决方案 > 正则表达式匹配复杂子字符串

问题描述

我有一个存储在 MySQL 中的 json,我想使用正则表达式查找匹配项。我试图通过使用 REGEXP 而不是 LIKE 构建查询来实现这一点。

{"type":"4","Record channels HDCVI":{"1":"4","3":"16"},
"Supported standarts HDCVI DVR":{"0":"HDCVI","2":"IP","3":"AHD","4":"Analog"},
"Record resolution HDCVI DVR":{"1":"FullHD 1080p"},
"HDD amount":{"1":"2","2":"4"},
"Specs HDCVI DVR":{"0":"2x HDMI","1":"TV-out","2":"Videoanalytics","3":"eSATA","5":"RS-485"}}

例如,我需要用 4 个记录通道 HDCVI 获取所有记录。

所以,我的想法是寻找这样的子字符串:

"Record channels HDCVI":{" ... :"4" ... "}

并且应该有占位符,而不是三个点,就像任何数量的任何字符但是这个表达式应该在第一个匹配结束大括号时停止。

这会选择子字符串,直到 HDD 数量部分下的最后 4"}。无法弄清楚。

/Record channels HDCVI.+"4"}/g

标签: mysqlregex

解决方案


你应该做这个:

/"Record channels HDCVI:{[^}]+:"4"/g


推荐阅读