参考MySQL正则表达式中的组?

The*_*ask 15 regex mysql

如何在MySQL中使用正则表达式引用组?我试过了:

REGEXP '^(.)\1$'
Run Code Online (Sandbox Code Playgroud)

但它不起作用.这该怎么做?

nob*_*ody 19

你不能,没有办法在MySql中引用正则表达式捕获组.

  • @ d5e5您是说该错误是功能吗? (2认同)

okd*_*wit 14

(老问题,但是最高的搜索结果)

对于MySQL 8:

SELECT REGEXP_REPLACE('stackoverflow','(.{5})(.*)','$2$1');
-- "overflowstack"
Run Code Online (Sandbox Code Playgroud)

您可以创建捕捉组(),你可以使用引用它们$1,$2等等.

  • 在 MariaDB 中,它是“\1”而不是“$1”。“替换字符串可以反向引用 \N 形式的子表达式,其中 N 是 1 到 9 之间的数字。” (https://mariadb.com/kb/en/regexp_replace/) (5认同)
  • 不适合我,MariaDB 10 中的 $1 和 \1 都不是,需要双反斜杠 '\\1',请参阅 https://mariadb.com/kb/en/regexp_replace/ (4认同)
  • 对我来说,这在 8.0.19 中并没有按预期工作 - 怀疑可能存在错误。(似乎也很奇怪,[文档](https://dev.mysql.com/doc/refman/8.0/en/regexp.html)中似乎没有提到它。) (2认同)
  • +1 MySQL 8.0.26 的文档中没有讨论这一点。https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-replace (2认同)