'/** ' * Copyright mpl by ERB software | http://wiki.yaslaw.info ' * ' * Extrahiert einen Submatch aus einem String ' * @example monat = print_r rx_choose("(\d{0,2})\.(\d{0,2})\.(\d{0,4})", "01.02.2013", 2) ' * @param String Pattern analog RegExp ' * @param String Der String der bearbeitet werden soll ' * @param Integer Match von dem das Subitem ausgegeben werden soll. Beginnt mit 1 ' * @param Integer SubMatch der ausgegeben werden soll. Bei 0 wird der gesammte Match ausgegeben Beginnt mit 0 ' * @param rxFlagsEnum Eigenschaften von Regexp. Global, IgnoreCase und Multiline. ' * Die Eigenschaften können mit + kombiniert werden ' * @return Wert oder False ' */ Public Function rx_choose( _ ByVal iPattern As String, _ ByVal iSubject As String, _ Optional ByVal iMatchIndex As Integer = 1, _ Optional ByVal iSubMatchIndex As Integer = 0, _ Optional ByVal iFlags As rxFlagsEnum = rxglobal + rxIgnorCase _ ) As Variant Dim mc As Object Dim idxSM As Integer: idxSM = iSubMatchIndex - 1 Dim idxM As Integer: idxM = iMatchIndex - 1 Set mc = rx_match(iPattern, iSubject, iFlags) If Not mc Is Nothing Then If mc.count > idxM And idxM >= 0 Then If idxSM = -1 Then rx_choose = mc.Item(idxM) GoTo Exit_Handler ElseIf mc.Item(idxM).SubMatches.count > idxSM And idxSM >= 0 Then rx_choose = mc.Item(idxM).SubMatches(idxSM) GoTo Exit_Handler End If End If End If rx_choose = False Exit_Handler: Set mc = Nothing End Function