Diese Funktion wendet ein Pattern auf ein String an und gibt ein Boolean zurück, wenn der Pattern greifft
Übersicht über alle rx-Funktionen: [VBA] RegExp Functions (RX-Functins)
Für die Ausgabe der Resultate verwendete ich die Funktion [VBA] print_r()
Public Function rx_like( _ ByVal iPattern As String, _ ByVal iSubject As String, _ Optional ByVal iFlags As rxFlagsEnum = rxGlobal + rxIgnorCase _ ) As Boolean
Setzte die Flags für das RegExp Object. Für das genaue Verhalten bitte die VB-Doku zur RegExp Klasse studieren
Standart ist mit IgnoreCase + Global
print_r rx_like("(\d+)\.(\d+)CHF", "Die Wurst kostet 6.50CHF und das Steak 3.50CHF") <Boolean> True
Die Funktion kann auch in SQL angewendet werden. Doch vorsicht, bei grösseren Datenmengen sollte man das rx-Objekt mitsaammt seinen Settings in den Cache setzen, damit dieses nicht für jeden Datensatz neu erstellt werden muss
SELECT t.* FROM my_table AS t WHERE rx_like("(\d+)\.(\d+)CHF", t.textfield)
Der Enumerator rxFlagsEnum wird für alle rx-Funktionen verwendet.
'/** ' * Wird für die rx_ Funktionen verwendet ' * Setzte die Flags für das RegExp Object ' */ Public Enum rxFlagsEnum rxnone = 0 rxGlobal = 2 ^ 0 rxIgnorCase = 2 ^ 1 rxMultiline = 2 ^ 2 End Enum
'/** ' * Copyright mpl by ERB software | http://wiki.yaslaw.info ' * ' * Führt den RegExp.test() aus und gibt ein Boolean zurück, falls das Pattern greift ' * @example new_string = rx_replace("([\W])", "_", "Hallo: Welt2!") ' * @param String Pattern analog RegExp ' * @param String Der String der getestet werden soll ' * @param rxFlagsEnum Eigenschaften von Regexp. Global, IgnoreCase und Multiline. ' * Die Eigenschaften können mit + kombiniert werden ' * @return Boolean ' */ Public Function rx_like( _ ByVal iPattern As String, _ ByVal iSubject As String, _ Optional ByVal iFlags As rxFlagsEnum = rxIgnorCase _ ) As Boolean 'Dim rx As New regExp Dim rx As Object: Set rx = CreateObject("VBScript.RegExp") rx.Global = iFlags And rxGlobal rx.IgnoreCase = iFlags And rxIgnorCase rx.Multiline = iFlags And rxMultiline rx.Pattern = iPattern rx_like = rx.test(iSubject) Set rx = Nothing End Function