Envisager un printf
-comme argument format
. Quelque chose comme:regex - spécificateurs de type de capture dans la chaîne de format
printf("Hello %s, your rating is %i%%", name, percentage);
Je veux utiliser regex pour capturer tous les spécificateurs (dans le cas ci-dessus, et %s
%i
et non%%
).
J'ai commencé avec un modèle naïf (%[^%])
, mais il capture à tort des choses comme %%f
au lieu de "l'échapper". Bien sûr, %%%f
doit être interprété comme un échappement "%", puis un spécificateur. J'ai pensé que j'avais besoin d'un motif plus complexe (peut-être lookbehind?), Mais je n'arrivais pas à le résoudre. Aucune suggestion? Note latérale: Je sais que mon modèle ne gère pas les spécificateurs de longueur et autres indicateurs de formatage tels que %2f
etc., mais cela me convient car mon objectif est principalement d'énumérer et de compter les spécificateurs de format.
Peut-être que vous avez besoin de spécifier plus quelles sont vos intentions. Pourquoi fais-tu ça? Avez-vous besoin d'utiliser regex, ou pouvez-vous faire une analyse de chaîne (par exemple, trouver et supprimer les caractères échappés)? – Derek
En fin de compte, le but est d'écrire une série de fonctions d'encapsulation autour de 'printf',' sprintf', 'NSLog' etc. qui remplace les spécificateurs erronés, gère la mise en forme de l'objet objc et plus encore. Je peux itérer le tableau char à la main et marquer la chaîne de format, mais regex rendrait le code beaucoup plus propre. – Elist
Je pense que l'itération à la main pourrait finir par être l'option la plus propre et la meilleure. Je ne suis pas un assistant de regex, mais je vais bien. Si cela doit être écrit par un assistant regex, cela peut rendre les choses plus compliquées que vous le souhaitez. – Derek