MySQL 정규식에서 캡처 그룹 참조
MySQL은 일치하는 패턴의 일부를 캡처하고 재사용하는 기능을 포함하여 포괄적인 정규식 지원을 제공합니다. . 그러나 그룹 캡처 및 참조는 다른 정규식 구현과 약간 다릅니다.
제공된 예에서 REGEXP '^(.)1$'은 바로 뒤에 반복되는 문자를 일치시키려고 시도합니다. 안타깝게도 캡처 그룹은 기본적으로 지원되지 않으므로 MySQL에서는 작동하지 않습니다.
MySQL 8용 솔루션
MySQL 8에는 캡처 그룹을 지원하는 REGEXP_REPLACE 함수가 도입되었습니다. . 캡처된 그룹을 참조하려면 $n을 사용합니다. 여기서 n은 캡처 그룹의 인덱스(1부터 시작)입니다. 예:
SELECT REGEXP_REPLACE('stackoverflow','(.{5})(.*)',''); -- Result: "overflowstack"
위 예에서 첫 번째 캡처 그룹((.{5}))은 처음 5개 문자(스택)와 일치합니다. 두 번째 캡처 그룹((.*))은 나머지 문자와 일치합니다(오버플로). 그런 다음 대체 문자열에서 교체됩니다.
MariaDB용 솔루션
MySQL의 포크인 MariaDB도 정규 표현식의 캡처 그룹을 지원하지만 접근 방식이 다릅니다. REGEXP_REPLACE에서 캡처 그룹을 참조하기 위해 \n을 사용합니다:
SELECT REGEXP_REPLACE('stackoverflow','(.{5})(.*)','\2\1'); -- Result: "overflowstack"
위 내용은 MySQL의 정규식에서 캡처 그룹을 참조하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!