>데이터 베이스 >MySQL 튜토리얼 >MySQL의 정규식에서 캡처 그룹을 참조하는 방법은 무엇입니까?

MySQL의 정규식에서 캡처 그룹을 참조하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-04 00:45:03731검색

How to Reference Capture Groups in MySQL's Regular Expressions?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.