programing

MySQL regex에서 캡처 그룹을 어떻게 참조합니까?

muds 2023. 9. 14. 00:00
반응형

MySQL regex에서 캡처 그룹을 어떻게 참조합니까?

MySQL에서 regex를 사용하여 그룹을 참조하는 방법은 무엇입니까?노력했습니다.

REGEXP '^(.)\1$'

하지만 작동하지 않습니다.이거 어떻게 해요?

(오래된 질문이지만 상위 검색 결과)

MySQL 8의 경우:

SELECT REGEXP_REPLACE('stackoverflow','(.{5})(.*)','$2$1');
-- "overflowstack"

다음을 사용하여 캡처 그룹을 만들 수 있습니다.(), 그리고 당신은 그들이 사용하는 것을 참조할 수 있습니다.$1,$2,기타.

MariaDB의 경우 캡처는 REGEXP_REPLATE with에서 수행됩니다.\\1,\\2, 등이 각각.

그럴 수 없습니다. MySql에는 정규분포 캡쳐 그룹을 참조할 수 있는 방법이 없습니다.

함수 호출을 쿼리에 내포하여 이 문제를 해결할 수 있습니다.열에 이 문자열이 있다고 가정합니다.

'100 SOME ST,THE VILLAGES,FL 32163,USA'

도시 이름을 캡처하고 싶겠죠MySQL에서 지원하는 경우 이와 같은 캡처 그룹이 작동합니다(그러나 그렇지 않습니다).

'^[0-9A-Z\s]+,\s*([a-zA-Z\s]*)'

함수 호출을 네스트하여 원하지 않는 부분을 떼어낸 다음 원하는 부분을 다음과 같이 잡을 수 있습니다.

SELECT REGEXP_SUBSTR(REGEXP_REPLACE(column_name, '^[0-9\\sA-Z]+,', ''), '^[0-9\\sA-Z]+') FROM table_name;

빌리지들

...

오래된 질문인데, 검색해보니 답이 나왔어요.Rlike는 백레퍼런스와 함께 사용할 수 있습니다.MySQL 5.7에서 테스트됨

#replace 'aa' with column name
SELECT 'aa' RLIKE '^(.)\1$';

언급URL : https://stackoverflow.com/questions/7058209/how-do-i-refer-to-capture-groups-in-a-mysql-regex

반응형