【问题标题】:MariaDB regexp_replace backreference not working as expectedMariaDB regexp_replace 反向引用未按预期工作
【发布时间】:2020-04-25 05:44:23
【问题描述】:

我在用户定义的函数中有这个简单的正则表达式

set mm = regexp_replace(in_str, '^M([0-9]+(\.[0-9]+)?).*$', '\\1');

在 MariaDB 10.1 中传入“M56-5”时,我会按预期得到“56”,但在 MariaDB 10.4 中,我收到错误“第 1 行的列 'mm' 的数据被截断”。当我传入'M56.5'时,我在两个版本中都得到了预期的“56.5”。有什么变化吗?

【问题讨论】:

    标签: mariadb regexp-replace backreference


    【解决方案1】:

    我想通了。我错误地使用了一个反斜杠来转义“。”而在转义特殊字符时需要使用 2 个反斜杠,一个用于 MariaDB 解析器,一个用于正则表达式库。 https://mariadb.com/kb/en/regular-expressions-overview/#escaping

    【讨论】:

      猜你喜欢
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      • 2014-08-01
      • 2019-08-09
      相关资源
      最近更新 更多