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.
Şunun için geçerlidir:
Databricks SQL
Databricks Runtime
Normal ifade (regex), bir dizi dizeyi açıklayan bir desendir. Çeşitli Azure Databricks SQL işlevleri ve işleçleri metni eşleştirmek, bulmak, saymak, ayıklamak, değiştirmek veya bölmek için normal bir ifade alır:
- rlike işleci ve regexp işleci: Dizenin bir desenle eşleşip eşleşmediğini test edin.
- regexp_like işlevi: Dizenin bir desenle eşleşip eşleşmediğini test edin.
- regexp_count işlevi: Desenin kaç kez eşleştiklerini sayar.
- regexp_instr işlevi: İlk eşleşmenin konumunu döndürür.
- regexp_substr işlevi: eşleşen ilk alt dizeyi döndürür.
- regexp_extract ve regexp_extract_all işlevleri: İlk eşleşmeden veya tüm eşleşmelerden bir yakalama grubu döndürür.
- regexp_replace işlevi: eşleşmeleri yeni bir dizeyle değiştirin.
- split işlevi: Bir dizeyi bir desenin eşleşmeleri etrafında bölün.
like ve i likee işleçleri normal ifadeler kullanmaz. ve %tabanlı _ daha basit bir desen dili kullanırlar.
Regex altyapısı
Azure Databricks, Java java.util.regex altyapısını kullanarak normal ifadeleri değerlendirir.
Desenler, Perl stili normal ifadelerle geniş ölçüde uyumlu olan ancak bazı ayrıntılarda farklılık gösteren normal ifade söz diziminde Java izlemelidir.
Tam ve yetkili başvuru için Java Pattern sınıfı belgelerine bakın.
Aşağıdaki bölümlerde en yaygın kullanılan yapılar açıklanmaktadır.
Karakter sınıfları
| İnşa etmek | Eşleşmeler |
|---|---|
. |
Çizgi sonlandırıcısı dışında herhangi bir tek karakter (bayrak ayarlanmadığı sürece s ). |
[abc] |
Listelenen karakterlerden herhangi biri: a, bveya c. |
[^abc] |
olmayan herhangi bir tek karaktera, bveya c. |
[a-z] |
ile zaralığındaki a herhangi bir karakter. |
\d, \D |
Bir basamak ([0-9]); \D basamak olmayan herhangi bir rakamla eşleşir. |
\w, \W |
Sözcük karakteri ([a-zA-Z_0-9]); \W sözcük olmayan herhangi bir karakterle eşleşir. |
\s, \S |
Boşluk karakteri; \S boşluk olmayan herhangi bir karakterle eşleşir. |
Tutturucular ve sınırlar
| İnşa etmek | Eşleşmeler |
|---|---|
^ |
Girişin başlangıcı (veya bayrağı olan bir satırın m ). |
$ |
Girişin sonu (veya bayrağı olan bir satırın m ). |
\b, \B |
Sözcük sınırı; \B sözcük olmayan bir sınırla eşleşir. |
Miktar Niceleyiciler
Niceleyiciler, önceki öğenin kaç kez eşleşmesi gerektiğini belirtir.
Varsayılan olarak, niceleyiciler doyumsuz olur ve mümkün olduğunca eşlenir. Niceleyiciyi isteksiz hale getirmek için ekleyin ? (mümkün olduğunca az eşleştirin), örneğin.*?.
| İnşa etmek | Önceki öğeyle eşleşir... |
|---|---|
* |
Sıfır veya daha fazla kez. |
+ |
Bir veya daha fazla kez. |
? |
Sıfır veya bir kez. |
{n} |
Tam olarak n zaman. |
{n,} |
En azından n bir kere. |
{n,m} |
m Ve zaman arasından. |
Gruplar ve değişim
| İnşa etmek | Description |
|---|---|
(...) |
Yakalama grubu. regexp_extract ile grup dizinini kullanın. |
(?:...) |
Yakalama olmayan bir grup. Eşleşmeyi yakalamadan gruplar. |
a\|b |
Değişim.
a veya bile eşleşir. |
Satır içi bayraklar
Tüm desenin eşleşme biçimini değiştirmek için desenin başlangıcına bir bayrak yerleştirin.
| Flag | Etkisi |
|---|---|
(?i) |
Büyük/küçük harfe duyarsız eşleştirme. |
(?s) |
Noktalı mod.
. satır sonlandırıcılarıyla eşleşir. |
(?m) |
Çok satırlı mod.
^ ve $ satır sonlarında eşleştirin. |
(?x) |
Açıklamalar modu. Desendeki boş alanı yoksayar. |
Örneğin, büyük(?i)ste(v\|ph)en/küçük harfe bakılmaksızın , stevenve STEPHEN ile eşleşirSteven.
Kaçış ve dize değişmez değerleri
Aynı zamanda bir regex meta karakter (, , , ([veya \gibi.*) olan bir karakterle eşleştirmek için önüne ters eğik çizgi koyun.
Örneğin, \. değişmez değer dönemiyle eşleşir ve \\ değişmez değer ters eğik çizgiyle eşleşir.
Ters eğik çizgi aynı zamanda normal SQL dize değişmez değerlerindeki kaçış karakteri olduğundan, regex altyapısına geçirmeyi planladığınız her ters eğik çizgiyi ikiye katlamalısınız.
Örneğin, deseni \d+ bir işleve geçirmek için normal bir dize değişmez değeri olarak '\\d+' yazın.
Bu çift kaçışı önlemek için kaçış karakteri ön işlemini devre dışı bırakan birraw-literal (r ön ek) kullanın.
Ham sabit değerde deseni tam olarak regex altyapısının beklediği şekilde yazın:
-- Regular string literal: backslashes must be doubled.
> SELECT regexp_substr('item 42 in stock', '\\d+');
42
-- Raw literal: write the pattern as-is.
> SELECT regexp_substr('item 42 in stock', r'\d+');
42
Ortak desenler
Aşağıdaki desenler sık kullanılan görevleri kapsar. Ters eğik çizgilerin regex altyapısına değişmeden geçmesi için ham değişmez değerler olarak yazılırlar. E-posta, URL ve IP desenleri, katı doğrulayıcılar değil, kasıtlı olarak basit çizimlerdir.
| Goal | Pattern |
|---|---|
| İsteğe bağlı olarak imzalı tamsayı | r'-?\d+' |
| Ondalık sayı | r'-?\d+(\.\d+)?' |
| Bir sözcük | r'\w+' |
Yalnızca tüm sözcük cat |
r'\bcat\b' |
| E-posta adresi (basit) | r'[\w.%+-]+@[\w.-]+\.\w{2,}' |
| URL'de konak oluşturma | r'https?://([^/]+)' |
| IPv4 adresi (0-255'i denetlemez) | r'\d{1,3}(\.\d{1,3}){3}' |
ISO tarihi (YYYY-MM-DD) |
r'\d{4}-\d{2}-\d{2}' |
| Baştaki ve sondaki boşluk | r'^\s+\|\s+$' |
| ABD telefon numarası (basit) | r'\d{3}-\d{3}-\d{4}' |
Word sınırlar (\b) alt dize yerine bir word tamamıyla eşleşiyor:
-- 'cat' as a standalone word
> SELECT 'the cat sat on the mat' rlike r'\bcat\b';
true
-- 'cat' only as part of a larger word
> SELECT 'category' rlike r'\bcat\b';
false
Sipariş kimliği gibi yapılandırılmış bir belirteci ayıklamak için değişmez değer ön ekini niceleyici ile birleştirin:
> SELECT regexp_substr('Ref: ORD-12345 shipped on 2024-03-15', r'ORD-\d+');
ORD-12345
Doğru işlevi seçme
Hedefinizle eşleşen işlevi seçmek için bu tabloyu kullanın.
| İstediğiniz... | Use |
|---|---|
| Bir dizenin eşleşip eşleşmediğini test edin. | rlike / Regexp / regexp_like |
| İlk eşleşen alt dizeyi döndürür. | regexp_substr |
| Yakalama grubu döndür. | regexp_extract |
| Tüm eşleşmeleri döndürür. | regexp_extract_all |
| Eşleşmenin konumunu döndürür. | regexp_instr |
| Eşleşme sayısını sayma. | regexp_count |
| Eşleşmeleri diğer metinlerle değiştirin. | regexp_replace |
| Bir dizeyi eşleşmeler etrafında bölün. | split |
Basit _ / % bir deseni eşleştirin. |
Gibi / Ilike |