Problème de Regex
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour/Bonsoir à tous,
je suis venu vous poser une question très importante, dans le cadre d'un script de test assez complexe des composants d'une application, j'aurais voulu automatiser celui-ci, car, pour pouvoir exécuter les test, j'ai, avant chaque fonctions, un code comme celui-ci :
J'ai un parse fonctionnel pour l'étape où je récupère les @param, etc... mais ce dont j'ai vraiment besoin c'est de la récupération des /*DESC ... */ car, si il y en a deux dans un même document, cela fait tout planter, et en plus des infos de la fonction, je me tape aussi tout le code entre le tout premier /*DESC et le tout dernier */
Donc, mon problème étant qu'il faut ABSOLUMENT que je récupère la valeur contenue UNIQUEMENT entre /*DESC et */ avant chaque fonction (dont le nom, et les "attributs" [private, public, etc...] peuvent cahnger :s)
Donc, ma question étant : Est-ce qu'il y a un moyen ? Et si oui, comment ?
Voici mon REGEX actuel : /\/\*DESC(?:\s)*(.*)(?:\s)*\*\//s
Merci de votre aide,
je suis venu vous poser une question très importante, dans le cadre d'un script de test assez complexe des composants d'une application, j'aurais voulu automatiser celui-ci, car, pour pouvoir exécuter les test, j'ai, avant chaque fonctions, un code comme celui-ci :
/*DESC
@param nom type
*/
function laFonction()
J'ai un parse fonctionnel pour l'étape où je récupère les @param, etc... mais ce dont j'ai vraiment besoin c'est de la récupération des /*DESC ... */ car, si il y en a deux dans un même document, cela fait tout planter, et en plus des infos de la fonction, je me tape aussi tout le code entre le tout premier /*DESC et le tout dernier */
Donc, mon problème étant qu'il faut ABSOLUMENT que je récupère la valeur contenue UNIQUEMENT entre /*DESC et */ avant chaque fonction (dont le nom, et les "attributs" [private, public, etc...] peuvent cahnger :s)
Donc, ma question étant : Est-ce qu'il y a un moyen ? Et si oui, comment ?
Voici mon REGEX actuel : /\/\*DESC(?:\s)*(.*)(?:\s)*\*\//s
Merci de votre aide,
A voir également:
- Problème de Regex
- Regex buddy - Télécharger - Édition & Programmation
- Regex tout sauf - Forum Java
- Regex ne commence pas par ✓ - Forum Programmation
- Regex mot de passe ✓ - Forum Framework .NET
- Regex pour evitez la répétition des caractères - Forum PHP
3 réponses
Bonjour, merci des deux réponses qui m'ont été proposés très gentillement, je tenais à dire que j'ai réussi à résoudre mon problème autrement en augmentant les performances de mon application, cette méthode est plus complexe, mais comme j'ai vite tendance à me plaindre des gens qui disent : "j'ai résolu mon problème" mais qui ne donnent pas la solution, je vais vous la donner pour ceux que ça intéresseraient :
Sur ce au revoir à tous, ce jour étant mon anniversaire, je m'en vais festoyer :D
$tokens = token_get_all(file_get_contents("chemin/vers/votre/fichier.php")); $tokList = array(); foreach($tokens as $tok) { if ($tok[0] != T_COMMENT) { continue; } if (substr($tok[1], 0, strlen("/*DESC")) === "/*DESC") { $tokList[] = array('line' => $tok[2], 'text' => str_replace(array(' ', ' '), array(' ', ' '), $tok[1])); } }
Sur ce au revoir à tous, ce jour étant mon anniversaire, je m'en vais festoyer :D
Bonjour,
Un teruc du genre, peut-être :
Cordialement,
Gigtrappeur
Un teruc du genre, peut-être :
<?php $test = " /*DESC @param nom type */ function laFonction() /*DESC @param nom type 2 */ function laFonction() "; preg_match_all("#/\*DESC(?:\s)*(.*)(?:\s)*\*/#", $test, $matches, PREG_SET_ORDER); echo '<pre>'; print_r($matches); echo '</pre>'; ?>
Cordialement,
Gigtrappeur