mein Ziel war es die Performance zwischen JAVA und den Regex SQL Statements zu testen, weil es sich bei meiner Aufgabe um eine größere Datenmenge handelt und außerdem habe ich dann mehr Verständnis für JAVA.
Mit etwas probieren habe ich selbst die Lösung gefunden, die ich euch nicht vorenthalten will
PHP-Code:
ctl-opt dftactgrp(*no) alloc(*teraspace);
//------------------------------------------------------------------//
// Includes //
//------------------------------------------------------------------//
/include QSYSINC/QRPGLESRC,JNI
//------------------------------------------------------------------//
// Prototypes //
//------------------------------------------------------------------//
dcl-s JAVA_String object(*JAVA:'java.lang.String');
dcl-pr newString object(*JAVA:'java.lang.String')
extproc(*JAVA:'java.lang.String':*constructor);
Value varchar(1000000) const;
end-pr;
dcl-pr getBytes varchar(65535)
extproc(*JAVA:'java.lang.String':'getBytes');
end-pr;
dcl-pr Compile object(*JAVA:'java.util.regex.Pattern')
extproc(*JAVA:'java.util.regex.Pattern':
'compile') static;
Pattern like(JAVA_String);
end-pr;
dcl-pr Matcher object(*JAVA:'java.util.regex.Matcher')
extproc(*JAVA:'java.util.regex.Pattern':'matcher');
String object(*JAVA:'java.lang.CharSequence');
end-pr;
dcl-pr Find ind
extproc(*JAVA:'java.util.regex.Matcher':'find');
end-pr;
dcl-pr Start int(10)
extproc(*JAVA:'java.util.regex.Matcher':'start');
end-pr;
dcl-pr End int(10)
extproc(*JAVA:'java.util.regex.Matcher':'end');
end-pr;
dcl-pr Group object(*JAVA:'java.lang.String')
extproc(*JAVA:'java.util.regex.Matcher':'group');
Index int(10) value;
end-pr;
dcl-s RegExPattern object(*JAVA:'java.util.regex.Pattern');
dcl-s RegExMatcher object(*JAVA:'java.util.regex.Matcher');
//------------------------------------------------------------------//
// Variables //
//------------------------------------------------------------------//
dcl-s RegPattern like(JString);
dcl-s RegString like(JString);
dcl-s LocPattern varchar(256);
dcl-s LocString varchar(256);
dcl-s LocInd int(10);
dcl-s LocGroup0 char(50);
dcl-s LocGroup1 char(50);
dcl-s LocGroup2 char(50);
dcl-s LocGroup3 char(50);
LocPattern = '(<div class="card">)([\s\S]*?)(</div>)';
LocString = '</div><div class="card">abcdex</div>' +
'<div>sdfssdf</div>' +
'<div class="card">bsdfsd</div></div>';
RegPattern = newString(LocPattern);
RegString = newString(LocString);
RegExPattern = Compile(RegPattern);
RegExMatcher = Matcher(RegExPattern:RegString);
dow Find(RegExMatcher) = *on;
LocInd += 1;
dsply ('Found: ' + %char(LocInd) + ' -> ' +
%char(Start(RegExMatcher)) + ' - ' +
%char(End(RegExMatcher)));
LocGroup0 = getBytes(Group((RegExMatcher):0));
LocGroup1 = getBytes(Group((RegExMatcher):1));
LocGroup2 = getBytes(Group((RegExMatcher):2));
LocGroup3 = getBytes(Group((RegExMatcher):3));
dsply (%subst(LocGroup0:1:30));
dsply (%subst(LocGroup1:1:30));
dsply (%subst(LocGroup2:1:30));
dsply (%subst(LocGroup3:1:30));
enddo;
*inlr = *on;
Ergebnis
PHP-Code:
DSPLY Found: 1 -> Pos 6 - 36
DSPLY <div class="card">abcdex</div>
DSPLY <div class="card">
DSPLY abcdex
DSPLY </div>
DSPLY Found: 2 -> Pos 54 - 84
DSPLY <div class="card">bsdfsd</div>
DSPLY <div class="card">
DSPLY bsdfsd
DSPLY </div>
Bookmarks