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(*noalloc(*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(10value;
         
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-> Pos 6 36                
DSPLY  
<div class="card">abcdex</div>    
DSPLY  <div class="card">                
DSPLY  abcdex                            
DSPLY  
</div>                            
DSPLY  Found-> Pos 54 84               
DSPLY  
<div class="card">bsdfsd</div>    
DSPLY  <div class="card">                
DSPLY  bsdfsd                            
DSPLY  
</div