VBA RegEx | Πώς να χρησιμοποιήσετε την Κανονική Έκφραση στο VBA Excel; (Παραδείγματα)

Τι είναι το RegEx στο Excel VBA;

Το RegEx σημαίνει " Regular Expression " στο VBA Excel και είναι μια ακολουθία χαρακτήρων που καθορίζει το μοτίβο αναζήτησης για την εύρεση ενός συγκεκριμένου μοτίβου χαρακτήρων σε μια σειρά τιμών. Με μια απλή λέξη «μπορούμε να δημιουργήσουμε ένα κανονικό μοτίβο έκφρασης και να το χρησιμοποιήσουμε για αναζήτηση της συμβολοσειράς αυτού του μοτίβου».

Το VBA RegEx είναι ένα μοντέλο αντικειμένου. Ξέρω ότι είναι εκφοβιστικό κοιτάζοντας την εξήγηση, αλλά το θέμα είναι ότι η φύση του αντικειμένου. Ένα πράγμα που πρέπει να θυμάστε εδώ είναι το VBA RegEx (Regular Expression) είναι ένα αντικείμενο λειτουργίας κειμένου όπως οι άλλες λειτουργίες κειμένου "ΑΡΙΣΤΕΡΑ, ΔΕΞΙΑ, MID"

Πώς να ενεργοποιήσετε το RegEx στο Excel VBA;

Όπως είπα, το VBA RegEx είναι ένα μοντέλο αντικειμένου στο VBA, όπως και το εξωτερικό λογισμικό μας, όπως το "MS Word" και το "MS PowerPoint". Ομοίως, το RegEx είναι επίσης ένα Component Object Model (COM) στο οποίο πρέπει να αναφερθούμε στον επεξεργαστή VBA. Για να ενεργοποιήσετε το RegEx, ακολουθήστε τα παρακάτω βήματα.

Βήμα 1: Μεταβείτε στο πρόγραμμα επεξεργασίας της Visual Basic (Alt + F11)

Βήμα 2: Μεταβείτε στα Εργαλεία και αναφορές.

Βήμα 3: Τώρα θα δείτε αναφορές στο έργο VBA. Κάντε κύλιση προς τα κάτω και επιλέξτε "Microsoft VBScript Regular Expression 5.5"

Βήμα 4: Τώρα κάντε κλικ στο OK. Μπορούμε να αποκτήσουμε πρόσβαση σε αυτό το αντικείμενο RegEx τώρα με κωδικοποίηση VBA.

Παράδειγμα - Τώρα θα σας δείξω ένα απλό παράδειγμα. Ας υποθέσουμε ότι έχετε τις λέξεις "Πωλήσεις 2019, Πωλήσεις 2018 και πωλήσεις 2017". Εάν ορίσετε το μοτίβο ως [0 - 7] ταιριάζει με όλους τους αριθμούς μεταξύ 0 και 7, οπότε οι αγώνες μας θα είναι 201, 201 και 2017 σε κάθε συμβολοσειρά.

Πρότυπο VBA RegEx

Το μοτίβο της λειτουργίας VBA RegEx φαίνεται εκφοβιστικό και χρειάζεται λίγο χρόνο για να κατανοήσουμε το μοτίβο. Μπορούμε να δούμε δύο είδη μιας ακολουθίας χαρακτήρων εδώ το ένα είναι "Literal Characters" και ένα άλλο είναι "Metacharacters".

  • Οι κυριολεκτικοί χαρακτήρες αναζητούν την ακριβή αντιστοίχιση της παρεχόμενης συμβολοσειράς. Για παράδειγμα, η κυριολεκτική ακολουθία χαρακτήρων "EFG" αναζητά απλώς όλους τους αγώνες του "EFG" στο παρεχόμενο κείμενο.
  • Οι μεταχαρακτήρες δεν είναι παρά ένας συνδυασμός χαρακτήρων με ακριβή σημασία στο μοτίβο RegEx. Αυτό είναι τελείως διαφορετικό από τους κυριολεκτικούς χαρακτήρες. Είναι ένα τεράστιο θέμα που πρέπει να καλύψουμε, παρακάτω είναι μερικές από τις σημαντικές σύνταξη.
Σύνταξη Περιγραφή Παράδειγμα Παράδειγμα αγώνα
. Ταιριάζει με οποιονδήποτε μεμονωμένο χαρακτήρα της συμβολοσειράς εισόδου σημ Κατοικίδιο ζώο. Ποτ, βάλτε, μοτίβο
[] Ταιριάζει με έναν μόνο χαρακτήρα μεταξύ του βραχίονα μιας συμβολοσειράς εισόδου [σημ.] Ταιριάζει είτε p ή t
[^] Ταιριάζει με οποιονδήποτε μεμονωμένο χαρακτήρα, όχι μεταξύ του βραχίονα μιας συμβολοσειράς εισόδου [^ pt] Δεν ταιριάζει ούτε στο p ούτε στο t
[Πρώτο τελευταίο] Ταιριάζει με οποιονδήποτε χαρακτήρα μεταξύ της περιοχής που παρέχεται στην αγκύλη [0-9] Ταιριάζει με οποιοδήποτε ψηφίο από 0 έως 9
[αζ] Ταιριάζει με κάθε πεζό χαρακτήρα από a έως z
[ΑΖ] Ταιριάζει με κάθε κεφαλαίο χαρακτήρα από το Α στο Ω
\μικρό Ταιριάζει με οποιονδήποτε χαρακτήρα λευκού διαστήματος - Ταιριάζει με το διάστημα, τη νέα γραμμή ή τον χαρακτήρα καρτέλας
\ΜΙΚΡΟ Ταιριάζει με οποιονδήποτε χαρακτήρα μη λευκού διαστήματος - Οι χαρακτήρες που αντιστοιχούν δεν είναι Space, όχι Νέα Γραμμή ή χαρακτήρες Tab
\ρε Ταιριάζει με οποιονδήποτε μονοψήφιο χαρακτήρα SE 5 VG 6 Αγώνες 5 και 6
\ΡΕ Ταιριάζει με κάθε μεμονωμένο χαρακτήρα SE 5 VG 6 Αγώνες SEVG

Ιδιότητες και μέθοδοι αντικειμένου RegEx

Όπως όλα τα μοντέλα αντικειμένων μας, το RegEx έχει επίσης τις δικές του ιδιότητες και μεθόδους. Τώρα θα δούμε ένα προς ένα λεπτομερώς.

Ιδιότητες του αντικειμένου VBA Regex

  • Πρότυπο: Χρησιμοποιείται για να ταιριάζει με την παρεχόμενη συμβολοσειρά.
  • Παράβλεψη περίπτωσης: Αυτό γίνεται για να αγνοήσετε κεφαλαίους και πεζούς χαρακτήρες.
  • Παγκόσμιο: Αν θέλετε να βρείτε όλους τους αγώνες στο μοτίβο, τότε το TRUE είναι το επιχείρημα αλλιώς θα βρεθεί ο πρώτος αγώνας.
  • Πολλαπλή γραμμή: Αν θέλετε να βρείτε νέες αλλαγές γραμμής, μπορείτε να τη χρησιμοποιήσετε.

Μέθοδοι αντικειμένου RegEx

  • Δοκιμή: Αυτό γίνεται για να ελέγξετε εάν το μοτίβο μπορεί να βρεθεί στην παρεχόμενη συμβολοσειρά. Αυτό θα επιστρέψει ΑΛΗΘΕΙΑ αν βρεθεί ή αλλιώς ΛΑΘΟΣ.
  • Εκτέλεση: Αυτό θα επιστρέψει όλους τους αγώνες του μοτίβου με τη συμβολοσειρά εύρεσης.
  • Αντικατάσταση: Αυτό θα αντικαταστήσει τη συμβολοσειρά αναζήτησης με τη νέα συμβολοσειρά.

Παράδειγμα RegEx στο VBA Excel

Τώρα ρίξτε μια ματιά στο παρακάτω παράδειγμα κώδικα VBA.

Μπορείτε να κάνετε λήψη αυτού του προτύπου VBA RegEx Excel εδώ - Πρότυπο VBA RegEx Excel

Κώδικας:

Sub RegEx_Example () Dim RegEx As Object, MyString As String Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "[0-9] +" End With MyString = "Η ημερομηνία γέννησης είναι 1985" MsgBox RegEx . Δοκιμή (MyString) MyString = "Η ημερομηνία γέννησης είναι ???" MsgBox RegEx.Test (MyString) End Sub

κανονική

Στον παραπάνω κώδικα, έχουμε ορίσει το μοτίβο για αναζήτηση στον αριθμό από 0 έως 9 ως εξής.

 Με RegEx .Pattern = "[0-9] +" Τερματισμός με 

Στη συνέχεια, η μεταβλητή MyString = "Ημερομηνία γέννησης είναι το 1985", διατηρεί τις τιμές από 0 έως 9, οπότε το πλαίσιο μηνυμάτων μας θα επιστρέψει ΑΛΗΘΕΙΑ.

MyString = "Η ημερομηνία γέννησης είναι ???" δεν έχει αριθμούς από 0 έως 9, έτσι θα επιστρέψει FALSE ως αποτέλεσμα των κουτιών μηνυμάτων