bestsource

mariadb REGEXP_INSTR은 괄호를 사용할 때 0 또는 1을 반환합니다.

bestsource 2023. 11. 5. 14:49
반응형

mariadb REGEXP_INSTR은 괄호를 사용할 때 0 또는 1을 반환합니다.

MariaDB Documentation은 REGEXP_INSTR에 대해 말합니다. 문자열 제목에서 정규식 패턴이 처음 발생한 위치를 반환하거나 패턴을 찾을 수 없는 경우 0을 반환합니다.

제 과제는 (간소화) o 뒤에 쌍자음을 찾는 것입니다.

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

반품은 1번이지만 ol의 위치는 4번으로 예상했습니다.

교체 작업에서도 동일한 작업 수행:

# 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 차이 없음

언급URL : https://stackoverflow.com/questions/44229219/mariadb-regexp-instr-returns-0-or-1-when-using-brackets

반응형