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 [08.10.2014 10:08:49]
yaslaw
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(), cRx() ======
 +//Schnelles erstellen eines %%RegExp%%-Obektes mit erweiterten Pattern (Patterns erweitert um die Settings von %%RegExp%%).//​
  
- +==Version %%version%% (%%vdate%%)==
-====== [VBA] cRegExp() ====== +
-== Version %%version%% (%%vdate%%) == +
-<php> echo 1234; </​php>​+
  
 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 16: 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 30: 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 65: 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 141: 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.1412755729.txt.gz · Last modified: 08.10.2014 10:08:49 by yaslaw