J'ai besoin d'une expression régulière pour trouver des déclarations de classe afin que je puisse ajouter un #define avant le mot-clé "class". L'expression régulière n'a pas besoin d'être parfaite, juste assez pour qu'elle capture la plupart des cas.Expressions régulières pour trouver des déclarations de classe dans le code C++
Répondre
Que diriez-vous:
/^\s*class\s/
Cela devrait fonctionner raisonnablement bien. Je ne suis pas tout à fait sûr.
/class\s+([^\s]+)/
Ceci va capturer le nom de la classe comme $ 1 (ou l'équivalent dans n'importe quel framework regex que vous utilisez). Cela fonctionnera pour les classes de modèle qui peuvent avoir des espaces à l'intérieur du <> qui suit le nom de la classe. L'analyse est quelque chose qui n'est pas faisable avec une expression régulière, car elle nécessite des paires équilibrées de chevrons.
/.*class\s+([^{]+)\s*[:]?([^{]+){/
Cela devrait fonctionner pour la plupart des définitions de classes, y compris les classes de modèles. Le nom de la classe est capturé en $ 1 et s'il s'agit d'une classe dérivée, la base sera en $ 2.
La réponse de Yannick couvre la plupart du temps, mais elle correspond malheureusement aussi en avant les déclarations (et le texte qui suit ci-dessous les) et les énumérations strictes à savoir enum class myStrictEnum { // stuff };
Cela fonctionne bien et est assez stricte, mais elle est sans doute plus prolixe que ce besoin.
^(?!enum).*class\b\s\b[A-Za-z_][A-Za-z_0-9]*\b\s*($)?(|:\s*($)?(public|private|protected)\s*($)?\b[^{]*\s*)\s*($)?{
- 1. Expressions régulières dans C: exemples?
- 2. Expressions régulières en C#
- 3. Puis-je utiliser des expressions régulières pour trouver une méthode sur une classe dans java?
- 4. Code pour analyser des groupes de capture dans des expressions régulières dans un arbre
- 5. C# Expressions régulières avec des caractères \ Uxxxxxxxx dans le modèle
- 6. Expressions régulières dans J2ME
- 7. Comment trouver tous les tags d'image utilisant des expressions régulières
- 8. Expressions régulières dans VbScript?
- 9. Expressions régulières pour les fonctions de correspondance dans le code source javascript?
- 10. Obtenir les résultats d'une des expressions régulières dans C#
- 11. condition d'utilisation des expressions régulières
- 12. Aide sur les expressions régulières en C#
- 13. Expressions régulières sauf pour écrire dans le match
- 14. C# expressions régulières - mots entiers correspondants?
- 15. expressions régulières question
- 16. Expressions régulières dans les chaînes Unicode
- 17. fini- de URIs avec des expressions régulières
- 18. Javascript String.replace avec des expressions régulières dynamiques?
- 19. Plusieurs expressions régulières hideshow
- 20. Expressions régulières courantes
- 21. comment concaténer des expressions régulières en javascript?
- 22. Comment trouver des informations dans un fichier en utilisant des expressions régulières sous Linux
- 23. Expressions régulières dans les étapes de concombre
- 24. Ruby expressions régulières
- 25. Expressions régulières Analyse lexicale
- 26. N'importe quoi comme expressions régulières
- 27. Validation d'équations linéaires avec des expressions régulières?
- 28. Remplacer le texte en utilisant des expressions régulières dans MS Word - C#
- 29. Grammaire sans contexte décrivant des expressions régulières?
- 30. expressions régulières multiples motifs
La regex doit-elle correspondre à la totalité de la déclaration (probablement multi-lignes), ou simplement au mot-clé class? Ce dernier est facile à obtenir la plupart du temps juste; pour le premier, une regex est probablement le mauvais outil. –