我想使用正则表达式中的组捕获来解析字符串。这能用MySQL来完成吗?
例如,
SELECT my_wishful_function('->hello world<-', '/->(.*)<-/')并让它返回:
hello world发布于 2019-12-21 00:57:20
在MySQL 5.7中,如果边界->和<-仅在字符串中出现一次,则可以使用SUBSTRING_INDEX两次提取边界之间的部分:
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('I said ->hello world<- today', '->', -1), '<-', 1)输出
hello world发布于 2021-09-24 10:45:05
一个优雅的解决方案是使用REGEXP_SUBSTR()和积极的前瞻性/后台断言:
SELECT REGEXP_SUSBSTR('->hello world<-', '(?<=->).*(?=<-)');
-- hello world(?<=...)是一个正向后断言:我们检查匹配模式前面有...
(?=...)是一个积极的前瞻性断言:我们检查匹配模式后面是...
这些断言没有捕获,所以我们不需要删除分隔符->和<-
它与MySQL 8兼容
https://stackoverflow.com/questions/59431601
复制相似问题