如何在MySQL的正则表达式中引用捕获组?

Barbara Streisand
发布: 2024-11-04 00:45:03
原创
648 人浏览过

How to Reference Capture Groups in MySQL's Regular Expressions?

在 MySQL 的正则表达式中引用捕获组

MySQL 提供全面的正则表达式支持,包括捕获和重用匹配模式的部分的能力。但是,捕获和引用组与其他正则表达式实现略有不同。

在提供的示例中,REGEXP '^(.)1$' 尝试匹配紧随其后重复的字符。不幸的是,它在 MySQL 中不起作用,因为本机不支持捕获组。

MySQL 8 的解决方案

MySQL 8 引入了 REGEXP_REPLACE 函数,该函数支持捕获组。要引用捕获组,请使用 $n,其中 n 是捕获组的索引(从 1 开始)。例如:

SELECT REGEXP_REPLACE('stackoverflow','(.{5})(.*)','');
-- Result: "overflowstack"
登录后复制

在上面的示例中,第一个捕获组 ((.{5})) 与前五个字符(堆栈)匹配。第二个捕获组 ((.*)) 与其余字符匹配(溢出)。然后它们在替换字符串中进行交换。

MariaDB 的解决方案

MariaDB 是 MySQL 的一个分支,也支持正则表达式中的捕获组,但采用不同的方法。它使用 \n 来引用 REGEXP_REPLACE 中的捕获组:

SELECT REGEXP_REPLACE('stackoverflow','(.{5})(.*)','\2\1');
-- Result: "overflowstack"
登录后复制

以上是如何在MySQL的正则表达式中引用捕获组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板