User Tools

Site Tools


vba:functions:rx:rx_like

First PagePrevious PageBack to overviewNext PageLast Page

[VBA] rx_like()

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()

Definition

Public Function rx_like( _
        ByVal iPattern As String, _
        ByVal iSubject As String, _
        Optional ByVal iFlags As rxFlagsEnum = rxGlobal + rxIgnorCase _
) As Boolean

Parameterliste

  • iPattern Pattern analog RegExp
  • iSubject Der String auf den getestet werden soll
  • iFlags Eigenschaften von Regexp. Global, IgnoreCase und Multiline. Die Eigenschaften können mit + kombiniert werden

Enumeratoren

rxFlagsEnum

Setzte die Flags für das RegExp Object. Für das genaue Verhalten bitte die VB-Doku zur RegExp Klasse studieren

  • rxNone Alle Parameter werden auf False gesetzt. Wird vor allem zum überschreiben des Standards gebraucht.
  • rxGlobal Setzt Global1) auf True
  • rxIgnorCase Setzt IgnorCase2) auf True
  • rxMultiline Setzt Multiline auf True

Anwendungsbeispiele

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)

Code

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
rx.bas
'/**
' * 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
vba/functions/rx/rx_like.txt · Last modified: 13.12.2013 11:54:40 (external edit)