VBA RegEx - VBA Excel'de Normal İfade nasıl kullanılır? (Örnekler)

Excel VBA'da RegEx nedir?

RegEx , VBA Excel'de " Normal İfade " anlamına gelir ve bir değerler dizisindeki belirli bir karakter kalıbını bulmak için arama modelini tanımlayan bir karakter dizisidir. Basit bir kelimeyle, "bir normal ifade kalıbı oluşturabilir ve onu bu kalıbın dizesini aramak için kullanabiliriz."

VBA RegEx bir nesne modelidir. Açıklamaya bakarak korkutucu olduğunu biliyorum, ama mesele şu ki, nesnenin doğası. Burada hatırlamanız gereken bir şey, VBA RegEx (Normal İfade), diğer metin işlevlerimiz gibi bir metin işlevi nesnesidir, "LEFT, RIGHT, MID".

Excel VBA'da RegEx Nasıl Etkinleştirilir?

VBA'ya söylediğim gibi RegEx, VBA'daki bir nesne modelidir, tıpkı "MS Word" ve "MS PowerPoint" gibi harici yazılımlarımız gibi. Benzer şekilde, RegEx, VBA düzenleyicide başvurmamız gereken bir Bileşen Nesne Modelidir (COM). RegEx'i etkinleştirmek için aşağıdaki adımları izleyin.

Adım 1: Visual Basic Düzenleyicisi'ne gidin (Alt + F11)

Adım 2: Araçlar ve Referanslara gidin.

Adım 3: Şimdi, VBA Projesine referanslar göreceksiniz. Aşağı kaydırın ve "Microsoft VBScript Normal İfade 5.5" i seçin.

Adım 4: Şimdi tıklayın, Tamam. Bu RegEx nesnesine şimdi VBA kodlamasından erişebiliriz.

Örnek - Şimdi size basit bir örnek göstereceğim. "2019 Satışları, 2018 Satışları ve 2017 Satışları" kelimelerine sahip olduğunuzu varsayalım. Deseni (0-7) olarak tanımlarsanız, 0 ile 7 arasındaki tüm sayılarla eşleşir, böylece eşleşmelerimiz her dizede 201, 201 ve 2017 olacaktır.

VBA RegEx Kalıbı

VBA RegEx işlevinin kalıbı korkutucu görünüyor ve kalıbı anlamak biraz zaman alıyor. Burada iki tür karakter dizisi görebiliriz, biri "Değişmez Karakterler" ve diğeri "Metakarakterler" dir.

  • Değişmez Karakterler , sağlanan dizenin tam eşleşmesini arar. Örneğin, "EFG" gerçek karakter dizisi, sağlanan metinde "EFG" nin tüm eşleşmelerini arar.
  • Metakarakterler , RegEx modelinde tam anlamı olan karakterlerin birleşiminden başka bir şey değildir. Bu, Edebi Karakterlerden tamamen farklı . Ele alınması gereken çok büyük bir konu. Aşağıda bazı önemli sözdizimleri verilmiştir.
Sözdizimi Açıklama Misal Örnek Maç
. Giriş dizesinin herhangi bir tek karakteriyle eşleşir. pt Evcil Hayvan. Pot, Koymak, Desen
() Bir giriş dizesinin köşeli ayraçları arasındaki herhangi bir tek karakterle eşleşir. (pt) P veya t ile eşleşir
(^) Bir giriş dizesinin köşeli ayraçları arasında değil, herhangi bir tek karakterle eşleşir. (pt) Ne p ne de t ile eşleşmiyor
(İlk son) Parantez içinde sağlanan aralık arasındaki herhangi bir karakterle eşleşir. (0-9) 0 ile 9 arasındaki herhangi bir rakamla eşleşir
(az) A'dan z'ye herhangi bir küçük harfle eşleşir
(AZ) A'dan Z'ye herhangi bir büyük harf karakteriyle eşleşir
s Herhangi bir beyaz boşluk karakteriyle eşleşir. - Boşluk, Yeni Satır veya Sekme Karakteriyle eşleşir
S Beyaz boşluk olmayan herhangi bir karakterle eşleşir - Eşleşen karakterler Boşluk, Yeni Satır veya Sekme Karakteri değildir
d Herhangi bir tek haneli karakterle eşleşir. SE 5 VG 6 Maçlar 5 ve 6
D Rakam olmayan herhangi bir tek karakterle eşleşir SE 5 VG 6 SEVG ile eşleşir

RegEx Nesnesinin Özellikleri ve Yöntemleri

Tüm nesne modellerimiz gibi, RegEx'in de kendi özellikleri ve yöntemleri vardır. Şimdi tek tek detaylı göreceğiz.

VBA Regex Nesnesinin Özellikleri

  • Desen: Bu, sağlanan dizeyle eşleştirmek için kullanılır.
  • Büyük / Küçük Harfe Yoksay: Bu, büyük ve küçük harf karakterlerini yok saymak içindir.
  • Global: Örüntüdeki tüm eşleşmeleri bulmak istiyorsanız, DOĞRU bağımsız değişkendir, aksi takdirde ilk eşleşme bulunacaktır.
  • Çok Satırlı: Yeni satır sonlarını bulmak isterseniz, bunu kullanabilirsiniz.

RegEx Nesnesinin Yöntemleri

  • Test: Bu, modelin sağlanan dizede bulunup bulunmadığını test etmek içindir. Bu, bulunursa DOĞRU veya YANLIŞ döndürür.
  • Yürüt: Bu, kalıbın tüm eşleşmelerini bulma dizgisine göre döndürür.
  • Değiştir: Bu, arama dizesini yeni dizeyle değiştirir.

VBA Excel'de RegEx Örneği

Şimdi aşağıdaki örnek VBA koduna bir göz atın.

Kod:

Sub RegEx_Example () Dim RegEx As Object, MyString As String RegEx = CreateObject ("VBScript.RegExp") RegEx ile .Pattern = "(0-9) +" End With MyString = "Doğum tarihi 1985" MsgBox RegEx .Test (MyString) MyString = "Doğum Tarihi yılı ???" MsgBox RegEx.Test (MyString) End Sub

düzenli

Yukarıdaki kodda, kalıbı 0'dan 9'a kadar olan numarayı aşağıdaki gibi arayacak şekilde ayarladık.

RegEx .Pattern = "(0-9) +" İle Bitir

Daha sonra MyString = "Doğum tarihi 1985" değişkeni 0'dan 9'a kadar olan değerleri tutar, böylece mesaj kutumuz DOĞRU döndürecektir.

MyString = "Doğum Tarihi ???" 0 ile 9 arasında herhangi bir sayı içermez, bu nedenle mesaj kutuları sonucu YANLIŞ döndürür.

Ilginç makaleler...