8800 sujets

Développement web côté serveur, CMS

Bonjour à tous Smiley smile

Dans une colonne de mes tables, j'ai des enregistrements de type "[(N:Test1:N)(S:7:S)(R:1453144:R)][(N:Test2:N)(S:3:S)(R:145454:R)]". Bref, des lignes avec des codes propres à mon projet et indispensables.

Je souhaiterais extraire, via. regex, tous ce qu'il y a entre "(S:" et ":S)". Dans la ligne présentée, donc, je souhaiterais extraire 7 et 3. Et, si possible, additionner. Mais je doute que SUM et les REGEX puissent fonctionner ensemble directement en MySQL. Savez vous comment procéder ?

Merci d'avance. Smiley smile
A priori REGEXP ne permet ni de remplacer, ni de capturer une partie d'une chaîne mais retourne une réponse du type oui ou non sous la forme d'un entier selon que la chaîne répond positivement ou non à l'expression régulière.

Il est sans doute possible de bricoler en localisant le début et la fin de ta chaîne avec LOCATE(substr,str) puis d'extraire la portion qui t'intéresse avec SUBSTRING.

http://stackoverflow.com/questions/1318071/mysqllooking-for-equivalent-of-perls-regex-s-e-i-g-rigix-in-a-mysql-sel

Ce post a l'air de présenter une problématique similaire.

Si tu as pas besoin de ces données uniquement pour de la présentation il serait sans doute préférable de le faire dans un langage en sortie de base de données (PHP ?).
Ah, je vais donc devoir passer par PHP ... ça risque d'engendrer de sacré problème de lenteur. Merci quand même Smiley smile