Desen Eşleme için normal ifadeler kullanılır.
Excel'de kullanmak için şu adımları izleyin:
Adım 1 : VBA başvurusunu "Microsoft VBScript Regular Expressions 5.5" dosyasına ekleyin
- "Geliştirici" sekmesini seçin ( Bu sekmem yok ne yapmalıyım? )
- 'Kod' şerit bölümünden "Visual Basic" simgesini seçin
- "Uygulamalar için Microsoft Visual Basic" penceresinde, üst menüden "Araçlar" ı seçin.
- "Referanslar" ı seçin
- Çalışma kitabınıza eklemek için "Microsoft VBScript Regular Expressions 5.5" yanındaki kutuyu işaretleyin.
- "Tamam" ı tıklayın
Adım 2 : Deseninizi tanımlayın
Temel tanımlar:
- Aralık.
- Örneğin
a-z , a ile z arasındaki küçük harflerle eşleşir
- Örneğin
0-50 ile 5 arasında herhangi bir sayı ile eşleşir
[] Bu parantez içindeki nesnelerden birini tam olarak eşleştirin.
- Örneğin
[a]a harfi ile eşleşir
- Örneğin
[abc], a, b veya c olabilen tek bir harfle eşleşir
- Örneğin
[a-z], alfabenin küçük harfleriyle eşleşir.
()Dönüş amaçları için farklı eşleşmeleri gruplandırır. Aşağıdaki örneklere bakın.
{} Önceden tanımlanan desenin tekrarlanan kopyaları için çarpan.
- Örneğin,
[a]{2}iki ardışık küçük a harfi ile eşleşir:aa
- Örneğin
[a]{1,3}en az birini ve en fazla üç küçük harf maçları a, aa,aaa
+ Kendisinden önce tanımlanan desenin en az bir veya daha fazlasını eşleştirin.
- Örneğin
a+maç olacak ardışık bir en a, aa, aaave benzeri
? Sıfır ya da kendisinden önce tanımlanan modellerden birini eşleştirin.
- Örneğin, Desen mevcut olabilir veya olmayabilir, ancak yalnızca bir kez eşleştirilebilir.
- Örneğin,
[a-z]?boş dizeyle veya herhangi bir küçük harfle eşleşir.
* Önceden tanımlanan desenin sıfırını veya daha fazlasını eşleştirin. - Örneğin, mevcut olan veya olmayan desen için joker karakter. - Örneğin, [a-z]*boş dizeyle veya küçük harflerle dizeyle eşleşir.
. Yeni satır dışındaki herhangi bir karakterle eşleşir \n
- Örn. İle
a.başlayan ve dışındaki herhangi bir şeyle biten iki karakter dizesiyle eşleşir\n
| VEYA operatör
- Örneğin,
a|baracı ya da aya dab eşleştirilebilir eşleştirilebilir.
- Örn
red|white|orange, renklerden biriyle tam olarak eşleşir.
^ Operatör
- Örneğin
[^0-9] karakter bir sayı içeremez
- Örneğin
[^aA]karakter küçük aveya büyük harf olamazA
\ Aşağıdaki özel karakterden kaçar (yukarıdaki davranışı geçersiz kılar)
- Örneğin
\., \\, \(, \?, \$,\^
Ankraj Kalıpları:
^ Eşleşme dizenin başında gerçekleşmelidir
- Örneğin
^aBirinci karakter küçük harf harf olmalıa
- Örneğin
^[0-9]Birinci karakter bir sayı olmalıdır.
$ Eşleşme dizenin sonunda gerçekleşmelidir
- Örneğin,
a$son karakter küçük harf olmalıdıra
Öncelik tablosu:
Order Name Representation
1 Parentheses ( )
2 Multipliers ? + * {m,n} {m, n}?
3 Sequence & Anchors abc ^ $
4 Alternation |
Önceden Tanımlanmış Karakter Kısaltmaları:
abr same as meaning
\d [0-9] Any single digit
\D [^0-9] Any single character that's not a digit
\w [a-zA-Z0-9_] Any word character
\W [^a-zA-Z0-9_] Any non-word character
\s [ \r\t\n\f] Any space character
\S [^ \r\t\n\f] Any non-space character
\n [\n] New line
Örnek 1 : Makro olarak çalıştır
Aşağıdaki örnek makro A1, ilk 1 veya 2 karakterin basamak olup olmadığını görmek için hücredeki değere bakar . Öyleyse, kaldırılır ve dizenin geri kalanı görüntülenir. Değilse, hiçbir eşleşme bulunmadığını bildiren bir kutu görünür. Hücre A1değerleri 12abcdöndürülecek abc, değeri döndürülecek , değeri 1abcdöndürülmeyecektir abc, abc123çünkü rakamlar dizenin başında değildi.
Private Sub simpleRegex()
Dim strPattern As String: strPattern = "^[0-9]{1,2}"
Dim strReplace As String: strReplace = ""
Dim regEx As New RegExp
Dim strInput As String
Dim Myrange As Range
Set Myrange = ActiveSheet.Range("A1")
If strPattern <> "" Then
strInput = Myrange.Value
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.Test(strInput) Then
MsgBox (regEx.Replace(strInput, strReplace))
Else
MsgBox ("Not matched")
End If
End If
End Sub
Örnek 2 : Hücre içi işlev olarak çalıştırma
Bu örnek, örnek 1 ile aynıdır, ancak hücre içi işlev olarak çalışacak şekilde ayarlanmıştır. Kullanmak için kodu şu şekilde değiştirin:
Function simpleCellRegex(Myrange As Range) As String
Dim regEx As New RegExp
Dim strPattern As String
Dim strInput As String
Dim strReplace As String
Dim strOutput As String
strPattern = "^[0-9]{1,3}"
If strPattern <> "" Then
strInput = Myrange.Value
strReplace = ""
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.test(strInput) Then
simpleCellRegex = regEx.Replace(strInput, strReplace)
Else
simpleCellRegex = "Not matched"
End If
End If
End Function
Dizelerinizi ("12abc") hücreye yerleştirin A1. Bu formülü =simpleCellRegex(A1)hücreye B1girdiğinizde sonuç "abc" olur.

Örnek 3 : Döngü Aralığı
Bu örnek, örnek 1 ile aynıdır, ancak bir hücre aralığında dolaşır.
Private Sub simpleRegex()
Dim strPattern As String: strPattern = "^[0-9]{1,2}"
Dim strReplace As String: strReplace = ""
Dim regEx As New RegExp
Dim strInput As String
Dim Myrange As Range
Set Myrange = ActiveSheet.Range("A1:A5")
For Each cell In Myrange
If strPattern <> "" Then
strInput = cell.Value
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.Test(strInput) Then
MsgBox (regEx.Replace(strInput, strReplace))
Else
MsgBox ("Not matched")
End If
End If
Next
End Sub
Örnek 4 : Farklı kalıpları ayırma
Bu örnek, bir aralık ( A1, A2& A3) içinde dolaşır ve üç basamaktan sonra tek bir alfa karakteri ve ardından 4 sayısal basamaktan başlayan bir dize arar. Çıktı, model eşleşmelerini kullanarak bitişik hücrelere böler (). $1ifadesi, ilk kümesinde eşleşen ilk deseni temsil eder ().
Private Sub splitUpRegexPattern()
Dim regEx As New RegExp
Dim strPattern As String
Dim strInput As String
Dim Myrange As Range
Set Myrange = ActiveSheet.Range("A1:A3")
For Each C In Myrange
strPattern = "(^[0-9]{3})([a-zA-Z])([0-9]{4})"
If strPattern <> "" Then
strInput = C.Value
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.test(strInput) Then
C.Offset(0, 1) = regEx.Replace(strInput, "$1")
C.Offset(0, 2) = regEx.Replace(strInput, "$2")
C.Offset(0, 3) = regEx.Replace(strInput, "$3")
Else
C.Offset(0, 1) = "(Not matched)"
End If
End If
Next
End Sub
Sonuçlar:

Ek Kalıp Örnekleri
String Regex Pattern Explanation
a1aaa [a-zA-Z][0-9][a-zA-Z]{3} Single alpha, single digit, three alpha characters
a1aaa [a-zA-Z]?[0-9][a-zA-Z]{3} May or may not have preceding alpha character
a1aaa [a-zA-Z][0-9][a-zA-Z]{0,3} Single alpha, single digit, 0 to 3 alpha characters
a1aaa [a-zA-Z][0-9][a-zA-Z]* Single alpha, single digit, followed by any number of alpha characters
</i8> \<\/[a-zA-Z][0-9]\> Exact non-word character except any single alpha followed by any single digit