Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime
içindeki ifadeyle eşleşen ilk dizeyi strregexp ayıklar ve grup dizinine regex karşılık gelir.
Söz dizimi
regexp_extract(str, regexp [, idx] )
Bağımsız değişkenler
-
strSTRING: Eşleştirilecek ifade. -
regexpSTRING: Eşleşen desene sahip bir ifade. -
idx: Varsayılan 1 ile 0'a eşit veya daha büyük isteğe bağlı bir tam sayı ifadesi.
Döndürülenler
Bir STRING.
, strregexpveya idx iseNULL, sonuç olurNULL.
regexp herhangi bir bölümüyle streşleşmiyorsa, sonuç boş bir dizedir.
Genel desen eşleşiyorsa ancak tarafından idx belirtilen grup eşleşmeye katılmıyorsa, sonuç boş bir dize olur.
Dize normal regexp bir ifade olmalıdır. Desteklenen söz dizimi için bkz. Normal ifadeler .
Değişmez değerleri kullanırken kaçış karakteri ön işlemesini önlemek için ( ön ek)raw-literalr .
regexp birden çok grup içerebilir. Yakalama grupları, desenin bir kısmını parantez (...)içine alarak tanımlanır.
idx ayıklanması gereken regex grubunu gösterir.
0'lardan biri idx , normal ifadenin tamamıyla eşleşme anlamına gelir.
varsayılan değeri idx 1'dir, yani atlandığında idx ilk yakalama grubu döndürülür.
içinde tanımlanan idxyakalama gruplarının sayısından büyükse regexp Databricks bir hata oluşturur.
yalnızca 'ın regexp ilk eşleşmesi str dikkate alınır. Tüm eşleşmeleri ayıklamak için regexp_extract_all kullanın.
Yaygın hata koşulları
Örnekler
Belirli yakalama gruplarını ayıklama
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 1);
100
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 2);
200
Eşleşmenin tamamını döndürmek için idx 0 kullanın
> SELECT regexp_extract('Order: 100-200', '(\\d+)-(\\d+)', 0);
100-200
Varsayılan idx 1'dir
Atlandığında idx , ilk yakalama grubu döndürülür.
> SELECT regexp_extract('abc123def', '([a-z]+)(\\d+)');
abc
Eşleşme yok boş dize döndürüyor
> SELECT regexp_extract('hello world', '(\\d+)', 1);
NULL girişi NULL döndürür
> SELECT regexp_extract(NULL, '(\\d+)', 1);
NULL
Çift kaçışı önlemek için ham dize değişmez değerlerini kullanma
Normal bir SQL dizesinde ters eğik çizgilerin iki katına (\\d ortalamasına \d) sahip olması gerekir. Desenleri r daha doğal yazmak için ham dize değişmez değerleri için ön eki kullanın.
> SELECT regexp_extract('abc123', r'(\d+)', 1);
123
URL'den etki alanı ayıklama
> SELECT regexp_extract('https://www.databricks.com/product', r'https?://([^/]+)', 1);
www.databricks.com
Bir tarih dizesinden bileşen ayıklama
> SELECT regexp_extract('Event on 2024-03-15', r'(\d{4})-(\d{2})-(\d{2})', 0);
2024-03-15
> SELECT regexp_extract('Event on 2024-03-15', r'(\d{4})-(\d{2})-(\d{2})', 2);
03
Eşleşmeye katılmayan isteğe bağlı yakalama grubu
Bir grup isteğe bağlı olduğunda ve eşleşmediğinde, bu grup için boş bir dize döndürülür.
> SELECT regexp_extract('ac', r'(a)(b)?(c)', 2);
Geçersiz regex deseni
> SELECT regexp_extract('abc', '[invalid', 0);
Error: INVALID_PARAMETER_VALUE.PATTERN