Tüm Ürünler
Search
Belge Merkezi

MaxCompute:RLIKE

Son Güncelleme:Oct 04, 2026

RLIKE, MaxCompute SQL'de PCRE (Perl Compatible Regular Expressions) PCRE belirtimine dayanan ve SQL deyimlerinde desen eşleştirme ile değiştirme işlemlerinde kullanılan bir operatördür. Bu konu, RLIKE operatörünün kullanımını ve örneklerini açıklar. MaxCompute SQL'deki düzenli ifadelerin desteklediği özel karakterlerin ve karakter sınıflarının tam listesi için bkz. Düzenli ifadeler.

Özel karakterler

Aşağıdaki tabloda yaygın olarak kullanılan özel karakterler yer almaktadır. Tam liste için bkz. Düzenli ifadeler.

Özel Karakter

Açıklama

^

Bir dizenin başlangıcını eşleştirir.

$

Bir dizenin sonunu eşleştirir.

.

Herhangi bir tek karakteri eşleştirir.

*

Önceki karakteri veya deseni sıfır ya da daha fazla kez eşleştirir.

+

Önceki karakteri veya deseni bir ya da daha fazla kez eşleştirir.

?

  • Önceki karakteri veya deseni sıfır ya da bir kez eşleştirir.

  • Bir tekrarlayıcının (*, +, ?, {n}, {n,} veya {n,m}) ardından geldiğinde, bu tekrarlayıcıyı tembel moda geçirir. Tembel mod mümkün olduğunca az karakteri eşleştirir; varsayılan açgözlü mod ise mümkün olduğunca çok karakteri eşleştirir.

{n} veya {m,n}

{n} tam olarak n kez eşleşir. {m,n} m ile n kez arasında eşleşir.

\

Kaçış karakteridir.

\d

Herhangi bir rakamı (0–9) eşleştirir.

\D

Rakam olmayan herhangi bir karakteri eşleştirir.

Örnekler

Genel desen eşleştirme

  • Bir dizenin başlangıcını ve sonunu eşleştirme

    -- Check whether the string aa123bb starts with a. Returns true.
    SELECT 'aa123bb' RLIKE '^a';
    
    -- Check whether the string aa123bb starts with a and ends with b. Returns true.
    SELECT 'aa123bb' RLIKE '^a.*b$';
    
    -- Check whether the string footerbar contains foo followed by bar. Returns true.
    SELECT 'footerbar' RLIKE 'foo(.*?)(bar)';
    
    -- Check whether the string footerbar starts with foo and ends with bar. Returns true.
    SELECT 'footerbar' RLIKE '^foo(.*?)(bar)$';
  • Herhangi bir karakteri eşleştirme

    -- Check whether the string cc123bb starts with any character in the range a to d. Returns true.
    SELECT 'cc123bb' RLIKE '^[a-d]';
    
    -- Check whether the string 12abc34 starts with 12, ends with 34, and contains at least one character in the range a to d in between. Returns true.
    SELECT '12abc34' RLIKE '^12[a-d]+34$';

Kaçış karakteri eşleştirme

RLIKE operatörü kaçış karakteri olarak ters eğik çizgi (\) kullanır. Bu nedenle, düzenli ifade deseninde geçen her ters eğik çizginin (\) iki kez kaçışlanması gerekir.

  • Örnek 1

    a+b dizesini eşleştirmek için + özel bir regex karakteri olduğundan kaçış işlemi uygulanmalıdır. Regex motorunda bu durum a\+b şeklinde ifade edilir. Ek bir kaçış katmanı gerektiğinden dizeyi eşleştiren ifade a\\+b olur.

    SELECT 'a+b' RLIKE 'a\\+b';
    
    -- Results:
    +------+
    | _c1  |
    +------+
    | true |
    +------+
  • Örnek 2

    Regex motorunda özel bir karakter olan ve \\ şeklinde ifade edilmesi gereken ters eğik çizgi karakterini \ eşleştirmek için ek bir kaçış katmanı gerekir; bu durumda ifade \\\\ olarak yazılmalıdır.

    MaxCompute SQL'de ifadede a\\b yazılır ancak MaxCompute ifadeye kaçış uyguladığı için çıktıda a\b görüntülenir.

    SELECT 'a\\b', 'a\\b' RLIKE 'a\\\b';
    
    -- Results:
    +-----+------+
    | _c0 | _c1  |
    +-----+------+
    | a\b | false |
    +-----+------+
    
    SELECT 'a\\b', 'a\\b' RLIKE 'a\\\\b';
    
    -- Results:
    +-----+------+
    | _c0 | _c1  |
    +-----+------+
    | a\b | true |
    +-----+------+
  • Örnek 3

    Dize bir sekme karakteri (TAB) içeriyorsa sistem okuma sırasında \t değerini tek bir karakter olarak saklar. Bu nedenle regex deseninde normal bir karakter olarak değerlendirilir.

    SELECT 'a\tb', 'a\tb' RLIKE 'a\tb';
    
    -- Results:
    +---------+------+
    | _c0     | _c1  |
    +---------+------+
    | a     b | true |
    +---------+------+
  • Örnek 4

    Rakam (\d), rakam dışı (\D) ve geri referansları (\n) içeren dizeleri eşleştirin.

    -- Check whether the string 2025maxcompute starts with a digit character. Returns true.
    SELECT '2025maxcompute' RLIKE '^\\\d';
    
    -- Check whether the string maxcompute2025test starts with a non-digit character. Returns true.
    SELECT 'maxcompute2025test' RLIKE '^\\\D';
    
    -- Check whether the string alibaba-cloud-MC2025-test contains MC followed by digits. Returns true.
    SELECT 'alibaba-cloud-MC2025-test' RLIKE 'MC\\\d';
    
    -- Check whether the string alibaba-cloud-MC2025-test contains MC followed by exactly 4 digits. Returns true.
    SELECT 'alibaba-cloud-MC2025-test' RLIKE 'MC\\\d{4}-';
    
    -- Check whether the string contains abcdefdef. Returns true.
    -- abc is capture group 1, def is capture group 2, and \2 represents a backreference to the second capture group, which must be escaped again as \\\2. This matches abcdefdef.
    SELECT 'mmabcdefdefgg' RLIKE '(abc)(def)\\\2';

Karakter grupları

POSIX karakter grupları

POSIX karakter sınıflarının tam listesi için bkz. Düzenli ifadeler.


Karakter grubu


Açıklama


Eşdeğer


[[:alnum:]]


Harfler ve rakamlar


[a-zA-Z0-9]


[[:alpha:]]


Harfler


[a-zA-Z]


[[:digit:]]


Rakamlar


[0-9]


[[:lower:]]


Küçük harfler


[a-z]


[[:space:]]


Beyaz boşluk karakterleri


[ \t\r\n\v\f]


[[:upper:]]


Büyük harfler


[A-Z]

Örnekler

-- Check whether the string hello123 contains only letters and digits. Returns true.
SELECT 'hello123' RLIKE '^[[:alnum:]]+$';

-- Check whether the string hello_123 contains only letters and digits. Returns false.
SELECT 'hello_123' RLIKE '^[[:alnum:]]+$';

Çince karakter grupları

Çince karakter gruplarının tam listesi için bkz. Düzenli ifadeler.


Karakter grubu


Desen


Çift baytlı karakterler (ör. Çince karakterler)


[^\\\x{00}-\\\x{ff}]


Çince karakterler


[\\x{4e00}-\\x{9fa5}]


Çince noktalama işaretleri


Çince noktalama işaretlerinin birleşik bir kodlama aralığı yoktur. Her karakterin Unicode kod noktasını kullanarak tek tek eşleştirin.

Örnekler

Çince nokta ('。') Unicode kod noktası \x{3002} ile eşleşir:

SELECT * FROM VALUES ('你好。'),('nihao!') t(d) WHERE d RLIKE '[\\x{3002}]';

-- Returns:
-- +------------+
-- | d          |
-- +------------+
-- | 你好。      |
-- +------------+
Tek tırnak işaretini eşleştirmek için [\x{0027}] desenini (Unicode kod noktası 0027 ) kullanın.