Ana içeriğe geç

R Düzenli İfadelerine Rehber

R’de düzenli ifadeleri keşfedin: neden önemli olduklarını, onlarla çalışmak için araç ve fonksiyonları, yaygın regex kalıplarını ve nasıl kullanılacaklarını öğrenin.
· 12 dk. oku

Yapay Zeka ile Keşfedin

Düzenli ifadeler (regular expressions), kısaca regex, R, Python, C, C++, Perl, Java ve JavaScript gibi pek çok programlama dilinde bulunur. Regex işlevlerine bu dillerin temel sürümlerinde ya da kütüphaneler aracılığıyla erişebilirsiniz. Çoğu dilde regex kalıplarının sözdizimi benzerdir.

Bu eğitimde, R’de düzenli ifadelerin ne olduğunu, neden önemli olduklarını, onlarla çalışmamızı sağlayan araç ve fonksiyonları, en yaygın regex kalıplarını ve nasıl kullanılacaklarını inceleyeceğiz. Sonunda ise R regex’in bazı ileri uygulamalarına genel bir bakış yapacağız.

R Regex Nedir ve Neden Kullanmalısınız?

R’de düzenli ifade (regex), metinde bulunan belirli bir deseni tanımlayan bir karakter dizisidir (hatta tek bir karakter de olabilir). Regex kalıpları a kadar kısa veya şu StackOverflow başlığında bahsedilen kadar uzun olabilir.

Genel olarak konuşursak, yukarıdaki tanım yalnızca R için değil, düzenli ifadeleri destekleyen tüm diller için geçerlidir.

Regex, yapılandırılmamış metin verilerini işlemek ve madenciliğini yapmak için yaygın biçimde kullanılan, son derece esnek ve güçlü bir araçtır. Örneğin arama motorlarında, sözcüksel çözümlemede, spam filtrelemede ve metin düzenleyicilerde kullanılır.

R Regex ile Çalışmak için Araçlar ve Fonksiyonlar

Regex kalıpları çoğu programlama dili için benzer olsa da, onlarla çalışmaya yönelik fonksiyonlar farklıdır.

R’de, regex’i tespit etmek, eşleştirmek, konumlandırmak, çıkarmak ve değiştirmek için base R fonksiyonlarını kullanabiliriz. Aşağıda, bir karakter vektöründe regex eşleşmeleri arayan ve ardından şunları yapan temel fonksiyonlar yer almaktadır:

  • grep(), grepl() – eşleşme içeren dizelerin indislerini döndürür (grep()) veya hangi dizelerin eşleşme içerdiğini gösteren mantıksal bir vektör döndürür (grepl()).

  • regexpr(), gregexpr() – her dizede eşleşmenin başladığı indeksi ve bu eşleşmenin uzunluğunu döndürür. regexpr() bu bilgiyi yalnızca ilk eşleşme (soldan) için sağlarken, gregexpr() tüm eşleşmeler için aynı bilgiyi verir.

  • sub(), gsub() – her dizedeki tespit edilen eşleşmeyi belirtilen bir dizeyle değiştirir (sub() – yalnızca ilk eşleşme için, gsub() – tüm eşleşmeler için).

  • regexec() – regexpr() gibi çalışır ancak eşleşme içindeki belirtilen bir alt ifadenin bilgilerini de döndürür.

  • regmatches() – regexec() gibi çalışır ancak genel eşleşme ve belirtilen alt ifade için tespit edilen tam dizeleri döndürür.

Ancak, yerel R fonksiyonlarını kullanmak yerine, R regex ile çalışmanın daha kullanışlı ve tutarlı yolu, stringr adlı, tidyverse koleksiyonuna ait uzmanlaşmış paketi kullanmaktır. Bu kütüphane, stringi paketinin üzerine inşa edilmiştir. stringr kütüphanesinde tüm fonksiyonlar str_ ile başlar ve base R’dakilere kıyasla (opsiyonel parametre adları da dahil) çok daha sezgisel isimlere sahiptir.

stringr paketini yüklemek ve çağırmak için şunları çalıştırın:

install.packages('stringr')
library(stringr)

Aşağıdaki tablo, bu bölümde daha önce tartıştığımız base R fonksiyonları ile stringr fonksiyonları arasındaki ilişkiyi gösterir:

stringr

Base R

str_subset()

grep()

str_detect()

grepl()

str_extract()

regexpr(), regmatches(), grep()

str_match()

regexec()

str_locate()

regexpr()

str_locate_all()

gregexpr()

str_replace()

sub()

str_replace_all()

gsub()

stringr fonksiyonlarının ve düzenli ifadelerin tam listesini bu cheat sheet’lerde bulabilirsiniz; ancak bazılarını bu eğitimde ayrıca ele alacağız.

Not: stringr fonksiyonlarında önce veriyi, sonra regex’i geçiririz; base R fonksiyonlarında ise tam tersi.

Başka bir not: Bu eğitim, 2026 itibarıyla güncel sürüm olan stringr 1.5.1’i kullanır. Daha eski bir sürüm kullanıyorsanız bazı davranışlar farklı olabilir — özellikle 1.5.0’da önemli ölçüde güncellenen str_view() etrafında.

R Regex Kalıpları

Şimdi en popüler R regex kalıplarına ve kullanım alanlarına genel bir bakış yaparken aynı zamanda bazı stringr fonksiyonlarını pratik edeceğiz.

Bundan önce çok basit bir örneğe bakalım. Bir unicorn’un en az bir “corn”u var mı, kontrol edelim 😉

str_detect('unicorn', 'corn')

Çıktı:

TRUE

Bu örnekte, unicorn dizesinde corn dizesinin varlığını kontrol etmek için stringr fonksiyonu str_detect() kullandık.

Ancak genelde bir metinde belirli bir kelimeyi değil, belirli bir deseni — yani düzenli ifadeyi — ararız. Hadi bu kalıplara dalalım.

Özel Kaçışlar (Character Escapes)

R düzenli ifadelerinde özel anlam taşıyan birkaç karakter vardır. Daha doğrusu, tüm harf ve rakamlar gibi kendilerinin aynısını eşleştirmez, farklı bir şey yaparlar:

str_extract_all('unicorn', '.')

Çıktı:

1. 'u' 'n' 'i' 'c' 'o' 'r' 'n'

Açıkça görüyoruz ki unicorn’umuzda nokta yok. Ancak str_extract_all() fonksiyonu bu dizeden tek tek tüm karakterleri çıkardı. . karakterinin görevi tam olarak budur — yeni satır hariç herhangi bir tek karakteri eşleştirmek.

Peki gerçek bir noktayı çıkarmak istersek? Bunun için noktadan önce bir regex kaçış karakteri — ters eğik çizgi (\) — kullanmalıyız. Ancak burada dikkat edilmesi gereken bir püf noktası var: ters eğik çizgi, dizelerin içinde de kaçış karakteri olarak kullanılır. Bu da önce “kaçış karakterini kaçırmamız” gerektiği anlamına gelir; yani çift ters eğik çizgi kullanırız. Nasıl çalıştığına bakalım:

str_extract_all('Eat. Pray. Love.', '\\.')

Çıktı:

1. '.' '.' '.'

Dolayısıyla ters eğik çizgi, R düzenli ifadelerinde bazı sembollerin özel anlamını yok saymaya ve onları olduğu gibi yorumlamaya yardım eder. Bunun tersi bir görevi de vardır: normalde olduğu gibi yorumlanacak bazı karakterlere özel anlam kazandırmak. Aşağıda en çok kullanılan kaçış dizilerinin tablosu yer alıyor:

R regex

Ne ile eşleşir

\b

Bir kelime sınırı (\w ile \W arasındaki sınır)

\B

Kelime olmayan sınır (\w-\w veya \W-\W)

\n

Yeni satır

\t

Sekme

\v

Dikey sekme

Bu gibi durumlarda da çift ters eğik çizgi kullanmamız gerektiğini akılda tutarak bazı örneklere bakalım. Bu arada, ilk veya tüm eşleşmelerin HTML gösterimini görmek için başka bir stringr fonksiyonunu tanıtacağız: str_view():

str_view('Unicorns are so cute!', 's\\b')
str_view('Unicorns are so cute!', 's\\B')

Çıktı:

Unicorns are so cute!
Unicorns are so cute!

Unicorns are so cute! dizesinde s harfi iki kez geçer. Yukarıda, ilk R regex kalıbı s harfinin ilk örneğini (sonrasında boşluk olduğu için), ikincisi ise ikinci örneğini (sonrasında başka bir harf, yani kelime sınırı olmadığı için) vurguladı.

Birkaç örnek daha:

cat('Unicorns are\nso cute!')
str_view('Unicorns are\nso cute!', '\\n')

Çıktı:

Unicorns are
so cute!

Unicorns are_so cute!

cat('Unicorns are\tso cute!')
str_view('Unicorns are\tso cute!', '\\t')

Çıktı:

Unicorns are so    cute!

Unicorns are_so cute!

Karakter Sınıfları

Bir karakter sınıfı, önceden tanımlanmış bir karakter kümesindeki herhangi bir karakterle eşleşir. Yerleşik karakter sınıfları, önceki bölümde gördüğümüz kaçış dizileriyle aynı sözdizimine sahiptir: özel anlam yükleyen bir ters eğik çizgi ve onu izleyen bir harf. En yaygın yapılar aşağıda verilmiştir:

R regex

Ne ile eşleşir

\w

Herhangi bir kelime karakteri (harf, rakam veya alt çizgi)

\W

Herhangi bir kelime olmayan karakter

\d

Herhangi bir rakam

\D

Herhangi bir rakam olmayan karakter

\s

Herhangi bir boşluk karakteri (boşluk, sekme, yeni satır vb.)

\S

Herhangi bir boşluk olmayan karakter

Kendini açıklayan birkaç örneğe bakalım:

str_view('Unicorns are so cute!', '\\w')
str_view('Unicorns are so cute!', '\\W')

Çıktı:

[1] │ <U><n><i><c><o><r><n><s>< ><a><r><e>< ><s><o>< ><c><u><t><e>!
[1] │ Unicorns< >are< >so< >cute<!>
str_view('Unicorns are\nso cute!', '\\s')
str_view('Unicorns are\nso cute!', '\\S')

Çıktı:

Unicorns are<\n>so cute!
str_detect('Unicorns are so cute!', '\\d')

Çıktı:

FALSE

Yerleşik karakter sınıfları, [:character_class_name:] biçiminde alternatif bir görünümde de olabilir. Bunların bazıları ters eğik çizgili olanlarla eşdeğerdir; bazıları değildir. En yaygın olanlar şunlardır:

R regex

Ne ile eşleşir

[:alpha:]

Herhangi bir harf

[:lower:]

Herhangi bir küçük harf

[:upper:]

Herhangi bir büyük harf

[:digit:]

Herhangi bir rakam (\d ile eşdeğer)

[:alnum:]

Herhangi bir harf veya sayı

[:xdigit:]

Herhangi bir onaltılık basamak

[:punct:]

Herhangi bir noktalama işareti

[:graph:]

Herhangi bir harf, sayı veya noktalama işareti

[:space:]

Boşluk, sekme, yeni satır vb. (\s ile eşdeğer)

Yukarıdaki R regex kalıplarından herhangi birini köşeli parantez içine almamız gerektiğini unutmadan bazı örnekler inceleyelim:

str_view('Unicorns are so cute!', '[[:upper:]]')
str_view('Unicorns are so cute!', '[[:lower:]]')

Çıktı:

Unicorns are so cute!

Unicorns are so cute!

str_detect('Unicorns are so cute!', '[[:digit:]]')

Çıktı:

FALSE
str_extract_all('Unicorns are so cute!', '[[:punct:]]')

Çıktı:

1. '!'
str_view('Unicorns are so cute!', '[[:space:]]')

Çıktı:

Unicorns_are_so_cute!

Ayrıca, köşeli parantezler içine, içinden herhangi bir tek karakteri eşleştirmek istediğimiz bir karakter kümesi koyarak kullanıcı tanımlı bir karakter sınıfı oluşturmak da mümkündür. Köşeli parantezler içine bir harf veya sayı aralığı (Unicode sırasına göre), birkaç farklı aralık veya art arda ya da dağınık haldeki herhangi bir karakter ya da karakter grubu yerleştirebiliriz.

Örneğin, [A-D] A’dan D’ye kadar (dahil) herhangi bir büyük harfi, [k-r] k’den r’ye kadar (dahil) herhangi bir küçük harfi, [0-7] 0’dan 7’ye kadar (dahil) herhangi bir rakamı ve [aou14%9] köşeli parantez içindeki herhangi bir karakteri eşleştirir. Köşeli parantezlerin içine, ilk karakter olarak şapka (⁠^) koyarsak, R regex kalıbımız verilen karakterler dışındaki her şeyle eşleşir. Yukarıdaki eşleştirme mekanizmalarının büyük/küçük harfe duyarlı olduğunu unutmayın.

str_view('Unicorns Are SOOO Cute!', '[O-V]')
str_view('Unicorns Are SOOO Cute!', '[^O-V]')

Çıktı:

Unicorns Are SOOO Cute!

Unicorns Are SOOO Cute!

str_view('3.14159265359', '[0-2]')

Çıktı:

3.14159265359

str_view('The number pi is equal to 3.14159265359', '[n2e9&]')

Çıktı:

The number pi is equal to 3.14159265359

Niteleyiciler (Quantifiers)

Çoğu zaman, belirli bir R regex kalıbını tam bir kez yerine tekrarlı olarak eşleştirmemiz gerekir. Bunun için niteleyiciler kullanırız. Bir niteleyici her zaman ilgili olduğu regex kalıbının ardından gelir. En yaygın niteleyiciler aşağıdaki tabloda verilmiştir:

R regex

Kalıp tekrar sayısı

*

0 veya daha fazla

+

en az 1

?

en fazla 1

{n}

tam olarak n

{n,}

en az n

{n,m}

en az n ve en fazla m

Hepsini deneyelim:

str_extract('dog', 'dog\\d*')

Çıktı:

'dog'

Başlangıçtaki dog dizesini aldık: bu dizenin sonunda rakam yok ama bu durum bizi rahatsız etmiyor (0 veya daha fazla rakam olabilir).

str_extract('12345', '\\d+')

Çıktı:

'12345'
str_extract('12345', '\\d?')

Çıktı:

'1'
str_extract('12345', '\\d{3}')

Çıktı:

'123'
str_extract('12345', '\\d{7,}')

Çıktı:

NA

NA aldık çünkü dizgede en az 7 rakam yok, yalnızca 5 tane var.

str_extract('12345', '\\d{2,4}')

Çıktı:

'1234'

Çapalar (Anchors)

Varsayılan olarak R regex, verilen bir dizgenin herhangi bir kısmıyla eşleşir. Bu davranışı, bir R regex kalıbının dizge içindeki belirli bir konumunu belirterek değiştirebiliriz. Çoğu zaman, eşleşmeyi dizgenin başından veya sonundan zorlamak isteyebiliriz. Bunun için R düzenli ifadelerinde iki ana çapa kullanırız:

  • ^ – dizgenin başlangıcından eşleştirir (çok satırlı dizgelerde – her satırın başlangıcı)

  • $ – dizgenin sonundan eşleştirir (çok satırlı dizgelerde – her satırın sonu)

Bunların nasıl çalıştığını stella won no wallets palindromu üzerinde görelim:

str_view('stella won no wallets', '^s')
str_view('stella won no wallets', 's$')

Çıktı:

<s>tella won no wallets
stella won no wallet<s>

^ veya $ karakterlerinin kendileriyle eşleşmek istersek, ilgili karakterin önüne bir ters eğik çizgi koymamız gerekir (çiftleyerek):

str_view('Do not have 100$, have 100 friends', '\\$')

Çıktı:

Do not have 100$, have 100 friends

Ayrıca eşleşmeleri dizge içindeki kelime veya kelime olmayan sınırlara da sabitlemek mümkündür (sırasıyla \b ve \B):

str_view('road cocoa oasis oak boa coach', '\\boa')
str_view('road cocoa oasis oak boa coach', 'oa\\b')
str_view('road cocoa oasis oak boa coach', 'oa\\B')

Çıktı:

road cocoa oasis oak boa coach

road cocoa oasis oak boa coach

road cocoa oasis oak boa coach

Yukarıda, oa harf birleşimini şu şekilde eşleştirdik:

  • 1. örnek – kelimelerin başında
  • 2. örnek – kelimelerin sonunda
  • 3. örnek – ardından bir kelime karakteri geldiğinde (bizim örneğimizde – bir harf)

Seçim (Alternation)

Seçim operatörünü (|) uygulayarak aynı dizgede birden fazla R regex kalıbını eşleştirebiliriz. Bu operatörü kullanıcı tanımlı bir karakter sınıfının parçası olarak kullanırsak, olduğu gibi yorumlanır ve bu nedenle herhangi bir seçim yapmaz.

str_view('coach koala board oak cocoa road boa load coat oasis boat', 'boa|coa')

Çıktı:

coach koala board oak cocoa road boa load coat oasis boat

Yukarıdaki örnekte, boa ya da coa örneklerinin tümünü eşleştirdik.

Gruplama

R regex kalıpları belirli öncelik kurallarını izler. Örneğin, yineleme (niteleyiciler) kenetlemekten (anchoring) önce gelirken, kenetleme seçimden önce gelir. Bu kuralları geçersiz kılmak ve belirli bir işlemin önceliğini artırmak için gruplama kullanmalıyız. Bu, ilgilenilen alt ifadeyi parantez içine alarak yapılır.

Gruplama, seçim operatörüyle birlikte en iyi sonucu verir. Aşağıdaki örnekler bu birleşimin etkisini net biçimde gösterir:

str_view('code rat coat cot cat', 'co|at')
str_view('code rat coat cot cat', 'c(o|a)t')

Çıktı:

code rat coat cot cat

code rat coat cot cat

R Düzenli İfadelerinin İleri Uygulamaları

Buraya kadar tartıştıklarımız, R düzenli ifadeleriyle çalışmaya başlamak için iyi bir temel sunar. Ancak bu güçlü araçla yapabileceğimiz çok daha fazla şey var. Detaya girmeden, R regex ile gerçekleştirebileceğimiz bazı gelişmiş işlemleri anmakla yetinelim:

  • stringr fonksiyonlarının varsayılanlarını geçersiz kılma
  • Grafem kümelerini eşleştirme
  • Grup geri başvurusu (backreferencing)
  • Unicode özelliklerini eşleştirme
  • Gelişmiş karakter kaçışları uygulama
  • Bir deseni çıktıya dahil etmeden varlığını doğrulama (lookaround’lar)
  • Kalıp yinelemesini açgözlü (greedy) yerine tembel (lazy) hale getirme
  • Atomik gruplarla çalışma

Daha fazlasını Intermediate Regular Expressions in R kursumuzda öğrenin.

R Regex Meydan Okuması

Şimdi, bu eğitimde ele aldığımız R regex kalıplarını pratik etme sırası sizde. Bunu yapmak için Veri Kümesi: Internet News and Consumer Engagement dosyamızı kullanın ve şunu deneyin: tüm URL’lerden üst düzey alan adlarını (TLD) çıkarın. Bazı TLD örnekleri com, net, uk vb.dir.

Bu görevi tamamlamak için birden fazla yaklaşım vardır; zarif ve kompakt tek satırlık çözümler de dahildir (ipucu: önceki bölümde bahsedilen R regex lookaround’ları hakkında daha fazla bilgi edinip bunları bu sorunu çözmek için kullanabilirsiniz). Aşağıdaki oldukça gevşek yönlendirmeyi, nispeten “acemi” bir yaklaşım için değerlendirin:

  • Veri kümesindeki bazı URL’leri inceleyin ve TLD’den önce herhangi bir URL’de her zaman bulunan kalıpları ve hangilerinin isteğe bağlı olduğunu fark edin
  • TLD’den sonra herhangi bir URL’de zorunlu kalıplar olup olmadığını (ve varsa hangileri olduğunu) ve hangilerinin isteğe bağlı olduğunu belirleyin
  • URL’nin TLD’sinden önceki her şeyi kaldırın
  • URL’nin TLD’sinden sonraki her şeyi kaldırın

Yukarıdaki algoritmayı kullanarak sorunu çözmek için ek bir şey yapmanıza veya öğrenmenize gerek yok. Bu eğitimde tartıştıklarımızı tazeleyin ve bilginizi uygulamaya dökün. Özellikle stringr fonksiyonlarına, kaçışlara, karakter sınıflarına, niteleyicilere ve gruplamaya ihtiyacınız olacak.

Bonus: Meydan Okuma #2

Daha fazla pratik isterseniz, bu kez herhangi bir ipucu olmadan, şunu deneyin: önceki meydan okuma ile aynı veri kümesini kullanarak tüm URL’lerden alan adlarını çıkarın. Örneğin www.google.com URL’sinde alan adı google’dır.

Sonuç

Sonuç olarak, bu eğitimde R düzenli ifadeleri hakkında pek çok şey öğrendik. Özellikle şunları ele aldık:

  • R regex’in ne olduğu
  • Neden önemli oldukları ve nerelerde uygulandıkları
  • R düzenli ifadeleriyle çalışmak için (hem yerel R hem de uzmanlaşmış bir kütüphaneden) hangi fonksiyonların kullanıldığı
  • En yaygın R regex kalıpları ile kapsamları, nüansları ve dikkat edilmesi gerekenler
  • R regex ile kaçışlar, karakter sınıfları, niteleyiciler, çapalar, seçim ve gruplamanın ne zaman ve nasıl kullanılacağı
  • R regex ve fonksiyonlarının çeşitli uygulama örnekleri
  • R düzenli ifadeleriyle bazı ileri işlemler

Bu beceri ve kavramlar, düzenli ifade kavramı tüm dillerde aynı ve regex sözdizimi de çoğunda oldukça benzer olduğundan, R’de ve pek çok başka programlama dilinde çalışırken size yardımcı olacaktır.

R becerilerinizi geliştirmekle ilgileniyorsanız, DataCamp’in aşağıdaki kurs, beceri yolları ve makalelerini incelemeyi düşünün:

Elena Kosourova

Yazar

Elena Kosourova

IBM Sertifikalı Veri Bilimci (2020); daha önce dünya genelindeki petrol ve gaz sahalarında 12+ yıllık uluslararası iş deneyimine sahip Petrol Jeoloğu/Jeomodelleyicisi. Python, R ve SQL konusunda yetkin. Uzmanlık alanları: veri temizleme, veri işleme, veri görselleştirme, veri analizi, veri modelleme, istatistik, hikâye anlatımı, makine öğrenimi. Veri bilimi topluluklarını yönetme ve veri bilimi ile kariyer konularında makale ve eğitim yazma/gözden geçirme konusunda kapsamlı deneyim.

SSS

stringr’ın hangi sürümüne sahip olduğumu nasıl kontrol ederim ve nasıl güncellerim?

R konsolunuzda bunu çalıştırın:

packageVersion('stringr')

Eğer 1.5.0’ın altında bir şey görürseniz, şu komutla güncelleyin:

install.packages('stringr')
 
str_view_all() tamamen çalışmaz hale gelecek mi, yoksa şimdilik kullanmaya devam etmek güvenli mi?

Mevcut stringr sürümünde hâlâ çalışıyor ve bir süre daha çalışmaya devam edecek — R’de kullanımdan kaldırma (deprecation) hemen kaldırılacağı anlamına gelmez. Ancak her çağrı bir uyarı mesajı üretecek ve bu da hızla gürültülü hale gelir. Daha da önemlisi, kullanımdan kaldırılan fonksiyonlar gelecekteki büyük sürümlerde sonunda kaldırılır, dolayısıyla str_view_all()’a bağlı herhangi bir kod eninde sonunda bozulacaktır. Düzeltmek yaklaşık 30 saniye alır, bu yüzden ertelemek yerine şimdi yapmak daha iyidir.

Diğer diller yalnızca bir tane kullanırken, R regex’te neden çift ters eğik çizgi (\\) kullanmam gerekiyor?

Cevap: Çünkü R, dizeyi regex motoruna göndermeden önce işler. Tek bir \ R’nin dize ayrıştırıcısı tarafından tüketilir, bu yüzden tek bir \’ın regex motoruna ulaşmasını sağlamak için \\ gerekir. \\d yazarsınız ve R bunu regex için \d’ye dönüştürür — \d yazarsınız ve regex görmeden önce bozulur.

Base R’de grep() ile grepl() arasındaki fark nedir ve hangisini kullanmalıyım?

grep() eşleşen öğelerin indislerini döndürür; grepl() girdinizle aynı uzunlukta bir TRUE/FALSE vektörü döndürür. Pozisyonlara ihtiyaç duyduğunuzda grep(), filtrelemek veya test etmek istediğinizde grepl() kullanın. Pratikte, stringr’daki karşılıkları olan str_subset() ve str_detect() çoğu kullanım için daha temizdir.

[aeiou] gibi bir karakter sınıfını ne zaman, a|e|i|o|u gibi bir seçim yerine kullanmalıyım?

Tek karakterler için her zaman bir karakter sınıfı kullanın — daha hızlı ve daha temizdir. Seçeneklerinizden herhangi biri birden fazla karakter içeriyorsa, | ile seçim kullanın; örneğin cat|dog gibi, çünkü bunlar [] içine konamaz.

*, + ve ? niteleyicileri arasındaki fark nedir?

* = sıfır veya daha fazla (kalıp isteğe bağlıdır ve tekrarlanabilir). + = bir veya daha fazla (en az bir tane gerekir). ? = sıfır veya bir (isteğe bağlı, tekrarlanmaz). Hatırlatma: + ekler (en az bir ister), ? sorar (belki var, belki yok), * serbesttir.

sub() ile gsub() arasındaki fark nedir ve stringr’daki karşılıkları hangileridir?

sub() yalnızca ilk eşleşmeyi değiştirir; gsub() tüm eşleşmeleri değiştirir. stringr’daki karşılıkları str_replace() ve str_replace_all()’dır. stringr sürümleri tercih edilir çünkü tidyverse argüman sırasını izler — önce veri, sonra kalıp, üçüncü olarak değiştirme.

Base R’de regexpr()’i ne zaman, gregexpr()’i ne zaman kullanırım?

regexpr() her dizede ilk eşleşmenin konumunu bulur; gregexpr() tüm eşleşmeleri bulur. Çoğu R kullanıcısı bunun yerine stringr’ın str_locate() ve str_locate_all() fonksiyonlarını tercih eder — sonuçları, base R’nin kullanışsız adlandırılmış tamsayı biçimi yerine start ve end sütunlarına sahip temiz veri çerçeveleri olarak döndürürler.

Şapka (^) köşeli parantez içinde ve dışında ne anlama gelir?

[] dışında, bir dizgenin başlangıcına çapalar: ^Hello “Hello” ile başlayan dizgeleri eşleştirir. [] içinde ilk karakter olarak yer aldığında kümeyi olumsuzlar: [^aeiou] bir sesli harf olmayan her şeyi eşleştirir. [] içinde başka herhangi bir yerdeyse, düz bir şapka olarak değerlendirilir.

^ ve $ çapalara kıyasla \b kelime sınırlarını ne zaman kullanırım?

Bir dizge içinde yalnızca başta ya da sonda değil, tüm kelimeyi eşleştirmek istediğinizde \b kullanın. cat araması “concatenated” kelimesini de eşleştirir — \bcat\b yalnızca bağımsız kelimeyi eşleştirir. Özellikle metin analizinde, kısmi eşleşmeler sonuçlarınızı çarpıtacağından faydalıdır.

Konular

İlgili