Ekspresi reguler digunakan untuk Pencocokan Pola.
Untuk digunakan di Excel ikuti langkah-langkah ini:
Langkah 1 : Tambahkan referensi VBA ke "Microsoft VBScript Regular Expressions 5.5"
- Pilih tab "Pengembang" ( saya tidak memiliki tab ini apa yang harus saya lakukan? )
- Pilih ikon "Visual Basic" dari bagian pita 'Kode'
- Di jendela "Microsoft Visual Basic for Applications" pilih "Tools" dari menu atas.
- Pilih "Referensi"
- Centang kotak di sebelah "Microsoft VBScript Regular Expressions 5.5" untuk disertakan dalam buku kerja Anda.
- Klik "OK"
Langkah 2 : Tentukan pola Anda
Definisi dasar:
-
Jarak.
- Misalnya
a-z
cocok dengan huruf kecil dari a ke z
- Misalnya
0-5
cocok dengan angka dari 0 hingga 5
[]
Cocokkan persis salah satu objek di dalam kurung ini.
- Misalnya
[a]
cocok dengan huruf a
- Misalnya
[abc]
cocok dengan satu huruf yang bisa a, b atau c
- Misalnya
[a-z]
cocok dengan huruf tunggal alfabet tunggal.
()
Kelompokkan pertandingan yang berbeda untuk tujuan pengembalian. Lihat contoh di bawah ini.
{}
Pengganda untuk salinan pola berulang yang ditentukan sebelumnya.
- Misalnya
[a]{2}
cocok dengan dua huruf kecil berturut-turut a:aa
- Misalnya
[a]{1,3}
pertandingan setidaknya satu dan sampai tiga huruf kecil a
, aa
,aaa
+
Cocokkan setidaknya satu, atau lebih, dari pola yang ditentukan sebelumnya.
- Misalnya
a+
akan cocok berturut-turut yang ini a
, aa
, aaa
, dan sebagainya
?
Cocokkan nol atau salah satu pola yang ditentukan sebelumnya.
- Misalnya Pola mungkin ada atau tidak ada tetapi hanya dapat dicocokkan satu kali.
- Misalnya
[a-z]?
cocok dengan string kosong atau huruf kecil apa pun.
*
Cocokkan nol atau lebih dari pola yang ditentukan sebelumnya. - Misalnya Wildcard untuk pola yang mungkin ada atau tidak ada. - Misalnya [a-z]*
cocok dengan string kosong atau string huruf kecil.
.
Cocok dengan karakter apa pun kecuali baris baru \n
- Misalnya
a.
Mencocokkan string dua karakter yang dimulai dengan a dan berakhir dengan apa pun kecuali\n
|
ATAU operator
- Misalnya
a|b
artinya bisa a
atau b
bisa dicocokkan.
- Misalnya
red|white|orange
cocok dengan salah satu warna.
^
BUKAN operator
- Misal
[^0-9]
karakter tidak bisa berisi angka
- Misalnya
[^aA]
karakter tidak boleh huruf kecil a
atau huruf besarA
\
Lolos karakter khusus yang mengikuti (menimpa perilaku di atas)
- Misalnya
\.
, \\
, \(
, \?
, \$
,\^
Pola Penahan:
^
Kecocokan harus terjadi pada awal string
- Misalnya
^a
Karakter pertama harus huruf kecila
- Misalnya
^[0-9]
karakter pertama harus berupa angka.
$
Kecocokan harus terjadi pada akhir string
- Mis.
a$
Karakter Terakhir harus huruf kecila
Tabel diutamakan:
Order Name Representation
1 Parentheses ( )
2 Multipliers ? + * {m,n} {m, n}?
3 Sequence & Anchors abc ^ $
4 Alternation |
Singkatan Karakter Predefined:
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
Contoh 1 : Jalankan sebagai makro
Contoh makro berikut ini melihat nilai dalam sel A1
untuk melihat apakah 1 atau 2 karakter pertama adalah digit. Jika demikian, mereka dihapus dan sisa string ditampilkan. Jika tidak, maka sebuah kotak muncul yang memberi tahu Anda bahwa tidak ada kecocokan yang ditemukan. A1
Nilai sel 12abc
akan kembali abc
, nilai 1abc
akan kembali abc
, nilai abc123
akan kembali "Tidak Cocok" karena digit tidak pada awal string.
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
Contoh 2 : Jalankan sebagai fungsi dalam sel
Contoh ini sama dengan contoh 1 tetapi diatur untuk dijalankan sebagai fungsi dalam sel. Untuk menggunakan, ubah kode menjadi ini:
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
Tempatkan string Anda ("12abc") di dalam sel A1
. Masukkan formula ini =simpleCellRegex(A1)
dalam sel B1
dan hasilnya akan "abc".
Contoh 3 : Lingkaran Melalui Lingkaran
Contoh ini sama dengan contoh 1 tetapi loop melalui berbagai sel.
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
Contoh 4 : Membagi pola yang berbeda
Contoh ini loop melalui rentang ( A1
, A2
& A3
) dan mencari string yang dimulai dengan tiga digit diikuti oleh karakter alfa tunggal dan kemudian 4 digit angka. Output memisahkan pola yang cocok dengan sel yang berdekatan dengan menggunakan ()
. $1
mewakili pola pertama yang cocok dalam set pertama ()
.
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
Hasil:
Contoh Pola Tambahan
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