RegexLab 5 for 4D v17R3 and +

I am pleased to announce the latest release of Regex Lab 5

This release requires 4D v17 R3 or higher…

This version is included with the source code under the MIT Licence.

RegexLab 5 is the application for your tests.

The Match, Matches, Substitute, Split and Extract regex functions are now separated from the testing interface to lighten the component.

To benefit from these regex functions, simply includes the regex.4dbase component in your 4D app.

You can pick up some ideas and also improve, refine, correct this 4D component for the benefit of all the 4D Community if you want. You are welcomed to post here your modifications and improvements.

Component (source code) :
http://forums.4d.com/4DBB_Main/x_User/464/files/27763194.zipregex.4dbase>

Testing app : (which includes the compiled version of the regex.4dbase component 32/64 bits)
http://forums.4d.com/4DBB_Main/x_User/464/files/27763169.zipRegexLab5.4dbase>

Doc : http://forums.4d.com/4DBB_Main/x_User/464/files/27763205.zipdoc.text>

Enjoy and Merry Christmas ! :slight_smile:

Merci Maurice mais à quand la R3 pour tous ?
Je ne suis qu’en R2…

It works perfectly on Mac OS X but there is some issues with Windows 10 that I am investigating (stack overflow)

Not sure where is the bug !

The bug on Windows :win: is found :

Simply changing the stack size of the process defined in the method RegexLab_Windows to 64 Ko instead of 8 Ko solve the issue

<code 4D>
$process_id_l:=New process(Current method name;641024;$process_t;)
</code 4D>

Here the new test app RegexLab 5 which include the stack size modification and solve the issue on Windows

Testing app : (which includes the compiled version of the regex.4dbase component 32/64 bits)
http://forums.4d.com/4DBB_Main/x_User/464/files/27862860.zipRegexLab5.4dbase>

: Maurice INZIRILLO

Simply changing the stack size of the process defined in the method
RegexLab_Windows to 64 Ko instead of 8 Ko solve the issue
Why not 0? I’ve heard “if you don’t (*want to) know use 0”…

(*) added by me

By the way, I have extended the test button functionality to be able to do some speed test.

Option+click on the test button will display a request dialog to do a loop on your regex rule to get an idea of the speed.

Indeed. But the default size seems too big for me with 1024 Ko :slight_smile:

Old habit :wink:

From now on AJAR will publish all the new releases of “Regex Component” and the host database “RegexLab 5” with the source code on Github.

Here the links :
Regex component :
https://github.com/AJARProject/RegexComponent

RegexLab 5
https://github.com/AJARProject/RegexLab5

: Maurice INZIRILLO

From now on AJAR will publish all the new releases of “Regex
Component” and the host database “RegexLab 5” with the source code on
Github.

Here the links :
Regex component :
https://github.com/AJARProject/RegexComponent

RegexLab 5
https://github.com/AJARProject/RegexLab5

Hi Maurice,

these links are not working.

Yes, I don’t see it in https://github.com/AJARProjectAJARproject>

Ni https://ch-fr.4d.com/aj-suiteici>.

J’ai testé un motif que j’utilise et qui fiable et ça ne fonctionne pas.

Motif : (?i)^(?:(DSC)([0-9]{5}))?(?: - (\1)([0-9]{5}))?(\s?)(.*?)(_(?:s|m|l|t|dxo))?(.)([a-z]{3,4})$
Exemple de chaine à scinder DSC12345 Mon image_DxO.jpg
Résulta attendu
DSC
12345
Mon image
_DxO
jpg

Il me semble que ça devrait fonctionner avec Regexlab, onglet Split.
Un idée ?

Bonjour Bernard,

peux-tu essayer celui-ci qui est très proche du tiens ?

“(?mi-s)^(?:(DSC)([0-9]{5}))(?:\s)(.*?)(_(?:s|m|l|t|dxo))?(\.)([a-z]{3,4})$”

Patrick

Je vois que tu as échappé les .
Avec ton motif, la chaine est reconnue mais pas splittée.
Que signifie split pour Regexlab ?
Dans mon implémentation assez basique, j’obtiens ce que je cherche :
[]33658659;“Your comment here…”[/]
Ce n’est pas la première fois que je teste Regexlab sans arriver à le faire fonctionner ; je ne sais pas si c’est un problème de compréhension de ma part…

: Bernard ESCAICH

Je vois que tu as échappé les .
Nécessaire avec le slash, dans 4D. Ça tue encore plus la lisibilité mais c’est comme ça.
Que signifie split pour Regexlab ?
À la fouille aux https://forums.4d.com/Post/FR/2262536/1/2262537#2262537archive>, j’ai trouvé une vieille version avec doc html (vite fait sur le gaz, il doit y avoir plus récent), extraits :
Regex Lab offre 4 principales fonctions : Match, Substitution, Split, Extract qui se déclinent ainsi :
Regex_Match
Retourne un tableau de type chaine ($3) contenant l’ensemble des chaines répondant au motif de recherche
Regex_Substitution
Retourne un tableau de type chaine ($4) contenant l’ensemble des chaines répondant au motif de recherche et le texte après traitement de substitution ($5).
Regex_Split
Retourne un tableau de type chaine contenant l’ensemble des sous-chaines ayant été extraites du texte en utilisant le motif comme séparateur.
Regex_Extract
Retourne un tableau de type chaine contenant l’ensemble des chaines répondant au motif de recherche et le texte après traitement de substitution.

Oui tout à fait.
Pour le split, j’utilise REGEX_SplitText de VDL, disponible dans pas mal de modules de 4Dpop.

Patrick

Echapper est nécessaire : non !
L’interface que je vous montre est claire, les \ ne sont pas échappés dans le formulaire.
La variable du formulaire est directement utilisée par une instruction d’une rare complexité
<code 4D>
$OK_b:=Match regex(FRM_vt_Pattern;FRM_vt_Texte;FRM_Start_l;FRM_tl_Position;FRM_tl_Longueur)

$vl_Taille:=Size of array(FRM_tl_Position)
ARR_Resize (->FRM_tt_Texte;$vl_Taille)
For ($i;1;Size of array(FRM_tl_Position))
	FRM_tt_Texte{$i}:=Substring(FRM_vt_Texte;FRM_tl_Position{$i};FRM_tl_Longueur{$i})
End for 

</code 4D>
Une ligne, les autres servent à l’affichage dans la listbox, et la commande standard de 4D, ça me suffit.
Donc je ne comprends pas pourquoi il faut échapper dans RegexLab.

PS : en mode trace, les \ apparaissent échappés sans rien faire.

Hi Milan,

Thanks for your report.

Actually we were doing the migration in v18. It’s now done.

Here the Link : https://github.com/AJARProject/AJ_Tools_Regex

You will find the new v18 Project and the v17R3 Binary Database for the Regex component and the RegexLab Database.

J’ai testé à nouveau mon motif ; pour avoir une réponse :

  • dans Split, il faut échapper
  • dans Match, il ne faut pas échapper…
    Maurice, que nous dis-tu :
  • à propos de l’échappement
  • à propos de Split dont j’attends les composants de la décomposition ?