Ana içeriğe geç
Modül 7 · Ders 4 ders 4Kurstaki 28/32~10 min
Modül dersleri (4/4)

Normal ifadeyle böl

String.prototype.split(separator) yalnızca sabit bir dizeyi kabul etmez, aynı zamanda ayrıca ayırıcı olarak bir regex. Bu, onu tokenleştirme için güçlü bir araç haline getirir yapılandırılmış metin

JS
'uno, due,tre  quattro'.split(/[,\s]+/);
// ["uno", "due", "tre", "quattro"]

/[,\s]+/ normal ifadesi "bir veya daha fazla virgül veya boşlukla" eşleşir: split herhangi bir bileşik sınırlayıcıda bölünür.

Tipik durumlar

  • İzin verilen CSV: text.split(/\s*,\s*/) virgüllerin etrafındaki boşlukları işlemek için.
  • Saf tokenizer: text.split(/\s+/) kelimeleri çıkarmak için.
  • Ayırıcıyı koruyun: normal ifade yakalama grupları içeriyorsa, grupların içeriği sonuç dizisine dahildir.
JS
'a=1; b=2; c=3'.split(/(;)\s*/);
// ["a=1", ";", "b=2", ";", "c=3"]

() grubu olmasaydı noktalı virgül kaybolurdu. (;) ile onu saklarsınız sonuçta.

Bölünmüş işlemlerde ayırıcıları koruma

Yakalama parantezlerinin içine bölme ayırıcıları yerleştirirseniz, String.prototype.split çıktısı, ayırıcıları atmak yerine, son dizideki öğeler olarak kendilerini içerecektir.

Deneyin

Egzersiz#regex.m7.l4.e1
Denemeler: 0Yükleniyor…

İzin verilen tüm CSV ayırıcılarını bulun: çevresinde isteğe bağlı boşluklar bulunan bir virgül. Bu şekilde listeyi tokenize etmek için bölünmüş olarak kullanabilirsiniz.

Düzenleyici yükleniyor…
İpucu göster

İsteğe bağlı boşlukları doldurmak için virgülden önce ve sonra \\s* kullanın.

3 denemeden sonra çözüm mevcut

Alıştırmayı gözden geçirin

Egzersiz#regex.m7.l4.e2
Denemeler: 0Yükleniyor…

Tüm 'boşluk veya noktalı virgül' ayırıcılarını (bir veya daha fazla) bulun. Bu şekilde bölme, metni kelimelere ayıracaktır.

Düzenleyici yükleniyor…
İpucu göster

\\'leri ve ;'yi birleştir + nicelik belirteciyle [\\s;] sınıfında.

3 denemeden sonra çözüm mevcut

Ek zorluk

Egzersiz#regex.m7.l4.e3
Denemeler: 0Yükleniyor…

Write a regex to use in a split that separates numbers while keeping math operators `+`, `-`, `*`, `/` as elements of the array.

Düzenleyici yükleniyor…
İpucu göster

Enclose the math operators character class in capture parentheses to preserve them in the split array.

3 denemeden sonra çözüm mevcut