source

MariaDB PCRE 정규 표현 문제

gigabyte 2022. 9. 16. 23:08
반응형

MariaDB PCRE 정규 표현 문제

Devanagari 언어로 다양한 문자를 조회하고 싶습니다.사용하는 경우

SELECT count(`dev`) FROM `transliteration` WHERE `dev` REGEXP 'क़';

71의 카운트를 반환합니다.단, 유니코드 참조를 통해 문의할 수 있도록 하기 위해 다음과 같은 방법이 필요합니다.

SELECT count(`dev`) FROM `transliteration` WHERE `dev` REGEXP '[\\x{958}]';

MariaDB는 PCRE를 지원하므로 지금까지 성공하지 못해도 할 수 있을 입니다.는 심지어 서류를 읽었지만 소용이 없었다.16진수 이상이면 반복하고 싶은 것처럼 곱슬곱슬한 괄호 안의 숫자를 처리하는 것 같습니다.유니코드에는 두 자리 이상의 문자가 있습니다!

말씀드린 바와 같이 범위를 문의하고 싶습니다.[\x{0958}-\x{095E}]). 하지만 중요한 것부터 먼저.

시스템 전체에서 utf8 인코딩을 사용하고 있다고 가정하면,

다음과 같이 동작할 수 있습니다.

SELECT 'क़ज़फ़' REGEXP '^[क़-फ़]+$';

(테스트 환경에서 동작합니다.)

그렇지 않은 경우 REGEXP를 구축해야 할 수 있습니다.다음은 utf8과 Unicode 사이에서 변환하는 방법입니다.

SELECT CONVERT(UNHEX('0958') USING ucs2); --> क़
SELECT HEX(CONVERT('क़' USING ucs2))       --> 0958

언급URL : https://stackoverflow.com/questions/32023433/mariadb-pcre-regular-expression-issue

반응형