使用括号

时间:2017-05-28 15:51:30

标签: regex mariadb backreference

MariaDB文档说明了REGEXP_INSTR: 返回字符串主题中第一次出现正则表达式模式的位置,如果未找到pattern,则返回0。

我的任务是(简化):找到o后跟双辅音

SELECT REGEXP_INSTR('a_kollision', 'o([lm])\\1'); # -> expected 4 got 1

它返回1,但我原本预计会有4作为oll的位置

对替换工作做同样的事情:

# replace works as expected
SELECT REGEXP_REPLACE('a_kollision', 'o([lm])\\1', '???'); # -> a_k???ision -- OK

似乎在REGEXP_INSTR中使用括号时会出现问题:

SELECT REGEXP_REPLACE('a_kollision', 'oll', '???'); # -> a_k???ision  -- OK
SELECT REGEXP_REPLACE('a_kollision', '(oll)', '???'); # -> a_k???ision  -- OK
SELECT REGEXP_INSTR('a_kollision', 'oll'); # -> 4  -- OK
SELECT REGEXP_INSTR('a_kollision', '(oll)'); # -> 1  -- why?

如果没有匹配,则REGEXP_INSTR按预期返回0.

使用db:10.1.13

同时检查最新的稳定版本:10.2.6 没有区别。

0 个答案:

没有答案