User Tools

Site Tools


vba:cast:cregexp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vba:cast:cregexp [07.10.2014 16:06:37]
yaslaw [[VBA] cRegExp()]
vba:cast:cregexp [29.04.2015 11:19:24] (current)
yaslaw
Line 1: Line 1:
 <​const>​ <​const>​
-    version=2.0.0 +    version=2.1.0 
-    vdate=04.09.2014+    vdate=01.12.2014
     fname=cast_cregexp.bas     fname=cast_cregexp.bas
     ns=%NAMESPACE%     ns=%NAMESPACE%
     fpath=/​vba/​cast     fpath=/​vba/​cast
 </​const>​ </​const>​
-====== [VBA] cRegExp() ====== +====== [VBA] cRegExp(), cRx() ====== 
-== Version ​%%version%% (%%vdate%%) ==+//Schnelles erstellen eines %%RegExp%%-Obektes mit erweiterten Pattern ​(Patterns erweitert um die Settings von %%RegExp%%).//
  
 +==Version %%version%% (%%vdate%%)==
  
 Diese Funktion erstellt aus einem Pattern direkt ein %%RegExp%%-Objekt. Das erspart im Code immer ein Mehrzeiler zu generieren um ein %%RegExp%%-Objekt mit allen Settings zu bekommen. Diese Funktion erstellt aus einem Pattern direkt ein %%RegExp%%-Objekt. Das erspart im Code immer ein Mehrzeiler zu generieren um ein %%RegExp%%-Objekt mit allen Settings zu bekommen.
Line 14: Line 15:
  
 {{:​vba:​cast:​cast_cregexp.bas|Download %%fname%% (V-%%version%%)}} {{:​vba:​cast:​cast_cregexp.bas|Download %%fname%% (V-%%version%%)}}
-> Für die Ausgabe der Resultate verwendete ich die Funktion [[:​vba:​functions:​print_r +
-:]].+
 ===== Definitionen ===== ===== Definitionen =====
-<​code>​RegExp= cRegExp(pattern [,flags])+<​code>​RegExp = cRegExp(pattern [,flags])
 RegExp = cRegExp(pattern inkl. flags)</​code>​ RegExp = cRegExp(pattern inkl. flags)</​code>​
 +
 <code vb>​Public Function cRegExp( _ <code vb>​Public Function cRegExp( _
         ByVal iPattern As String, _         ByVal iPattern As String, _
Line 28: Line 29:
 ==== Enumeratoren ==== ==== Enumeratoren ====
 === rxFlagsEnum === === rxFlagsEnum ===
-Dieser Enumerator wird in allen Funktionen verwendet. 
 <code vb>'/​** <code vb>'/​**
 ' * Wird für die rx_ Funktionen verwendet ' * Wird für die rx_ Funktionen verwendet
Line 63: Line 63:
  
 ===== Beispiele ===== ===== Beispiele =====
 +> Für die Ausgabe der Resultate verwendete ich die Funktion [[:​vba:​functions:​print_r 
 +:]].
  
 ==== Beispiele mit Paramatern ==== ==== Beispiele mit Paramatern ====
Line 139: Line 140:
  
 ===== Code ===== ===== Code =====
 +==== Originalcode ====
 +{{:​vba:​cast:​cast_cregexp.bas|Download %%fname%% (V-%%version%%)}}
 <source '​%%fpath%%/​%%fname%%'​ vb> <source '​%%fpath%%/​%%fname%%'​ vb>
 +==== Abgespeckte Version cRx() ====
 +Häufig kopiere ich die folgenden Zeilen als Library in ein Modul oder Klasse um sie Selbständig zu machen. Siehe auch [[#​sinnvolle anwendung]].
 +\\ Die folgende Version ist analog zu vielen JQuery-Scripten die min-Version. Sprich, es ist dasseleb wie die Haubtversion,​ jedoch so kompakt dass es nicht mehr einfach lesbar ist. Dafür bläht es den Code nicht so stark auf, wenn man die Funktion in ein weiteres Modul packt.
 +<code vb>'/​**
 +' * Dies ist die Minimalversion von cRegExp
 +' * http://​wiki.yaslaw.info/​dokuwiki/​doku.php/​vba/​cast/​cregexp#​abgespeckte_version
 +' * mögliche Delemiter: @&​!/​~#​=\|
 +' * mögliche Modifiers: g (Global), i (IgnoreCode,​ m (Mulitline)
 +' *
 +' * @example ​   myRx = cRx("/​([a]{2,​})/​i"​) 'Finde alle folgen von a. Flag:​IgnoreCase
 +' * @version ​   2.1.0 (01.12.2014)
 +' * @param ​     String ​     Pattern mit Delimiter und Modifier analog zu PHP
 +' * @return ​    ​Object ​     RegExp-Object
 +' */
 +Private Function cRx(ByVal iPattern As String) As Object
 +    Static rxP As Object: ​      Set cRx = CreateObject("​VBScript.RegExp"​)
 +    If rxP Is Nothing Then:     Set rxP = CreateObject("​VBScript.RegExp"​):​ rxP.pattern = "​^([@&​!/​~#​=\|])?​(.*)\1(?:​([Ii])|([Gg])|([Mm]))*$"​
 +    Dim sm As Object: ​          Set sm = rxP.Execute(iPattern)(0).subMatches
 +    cRx.pattern = sm(1): ​       cRx.IgnoreCase = Not isEmpty(sm(2)): ​      ​cRx.Global = Not isEmpty(sm(3)): ​    ​cRx.Multiline = Not isEmpty(sm(4))
 +End Function</​code>​
vba/cast/cregexp.1412690797.txt.gz · Last modified: 07.10.2014 16:06:37 by yaslaw