J'ai un gros fichier avec des centaines de blocs de texte (parties d'appels de méthode C++) qui ressemblent au bloc Current
ci-dessous et je souhaite utiliser Xcode's Regular expression remplacement pour changer chacun pour ressembler au bloc Desired
ci-dessous, la capture des valeurs 0.89f, un nom, 0,1, 0,5 et 2.Comment utiliser Xcode `Find and Replace` sur des blocs de texte multilignes
on notera que les deux blocs de départ et de l'esprit d'extrémité h new Zapp
et //d.p.’s to show
respectivement afin de me sauver des charges d'édition manuelle, je souhaite utiliser regex recherche et remplacer.
Le principal problème est que je face à la nature multi-line
des blocs. Si l'on ignore que pour un moment, j'ai PRESQUE effectué une recherche et de remplacement sur les single-line
blocs suivants:
actuel:
new Zapp (0.89f // defaultParameterValue , "A name" // name , 0.1 // min , 0.5 // max , 2 // d.p.'s to show
désiré:
new Zapp (NormalisableRange<float> (0.1, 0.5) ,NormalisableRange<float> (0.1, 0.5).convertTo0to1(0.89f) , "A name" // name , 2 // d.p.'s to show
Rechercher et remplacer:
Trouver: Zapp\s+\((.*)\s+// defaultParameterValue\s+,\s+"(.*)"\s+\/\/\s+name\s+,\s+(.*)\s+\/\/\s+min\s+,\s+(.*)\s+\/\/\s+max\s+,\s+(.*)\s+\/\/\s+d.p.'s
Remplacer: Zapp (NormalisableRange<float> ($3, $4) ,NormalisableRange<float> ($3, $4).convertTo0to1($1) , "$2" // name , $5 // d.p.’s
Cette seule ligne solution a le problème supplémentaire espace blanc est vu après capture 1 (1 espace), capture 3 (4 espaces) et capture 5 (3 espaces), sinon cela fonctionne bien:
J'ai essayé d'éliminer les espaces blancs de la capture 1 (0.89f), la capture 3 (0,1) et capturer 5 (2) en utilisant [^\s]+
mais il n'a pas aidé donc si quelqu'un peut signaler la raison pour cela, je serais reconnaissant.
je peux, pour ce que ça vaut, chercher upper
et lower
en utilisant \s+
mais je ne peux pas le mettre tous ensemble pour obtenir le résultat souhaité.
J'ai vu quelques anciens messages en ligne qui suggèrent cette tâche pourrait ne pas être possible avec Xcode. Si c'est vrai, quelqu'un peut-il suggérer une approche alternative qui fera le travail?
Vos deux réponses répondent à la question en général, donc je vais marquer ceci comme la bonne réponse. Le fait de coller votre code dans la zone Rechercher et remplacer de Xcode ne correspond pas au texte, mais cela semble être une limitation avec les blocs multilignes dans Xcode. J'ai fourni une réponse moi-même en utilisant AppCode qui permet un terme de recherche multi-ligne, juste pour aider les autres qui pourraient utiliser AppCode. Merci pour votre réponse, j'ai appris quelque chose. –