InDesign puede realizar funciones avanzadas de búsqueda, cambio, también conocido como búsqueda, reemplazo mediante reglas GREP, también conocidas como expresiones regulares, también conocidas como expresiones regulares, lo que permite todo tipo de reglas comodín y automatización.
¿Hay alguna forma de hacer lo mismo en Illustrator?
Hice un guión para eso. Lo probé en Illustrator CS6 en Mac y en Windows.
Hace una búsqueda y reemplazo de expresiones regulares en el texto de los elementos seleccionados, o en todo el texto si no se selecciona nada.
Funciona en texto de punto, texto de área y texto en una ruta, y no le importa si se incluyen elementos que no son de texto en la selección.
Nota: parece haber un error en el que a veces no se encuentra el texto dentro de los grupos seleccionados; si encuentra esto, intente ejecutar el script sin seleccionar nada o desagrupar.
var scope = app.activeDocument.selection.length ? app.activeDocument.selection : app.activeDocument.pageItems;
var find = prompt("Find: (Text or GREP/regex)","");
if(find !== null){
var replace = prompt("Replace: (Text or GREP/regex)","");
if(replace !== null){
var changes = 0;
for(var i=0;i<scope.length;i++){
var text = scope[i];
var string = text.contents;
if(typeof string == "string"){
var newstring = string.replace( new RegExp(find, 'g'), replace);
if (newstring != string) {
changes++;
var paragraphsArray = newstring.split("\n");
text.paragraphs.removeAll();
for(var ii=0;ii<paragraphsArray.length;ii++){
text.paragraphs.add(paragraphsArray[ii]);
}
}
}
}
alert( changes==1 ? "1 text object changed" : changes + " text objects changed");
}
}
Cualquier regla GREP de InDesign debería funcionar. Recomiendo crear y probar la regla en InDesign Paragraph styles > GREP rules
con un texto de muestra y Vista previa marcada, luego copiar el código GREP en este script, que es más fácil que probar y error con este script.
En Replace
, puede usar $1
para cualquier cosa que coincida dentro del primer par de corchetes ( (
a )
), $2
para el segundo, etc.
Aquí hay algunos ejemplos que probé con él:
test
hello
test
, tent
, te!t
etc. caracteres de puntuación:
.
\
This be a sentence\. This be another\.
te.t
hello
,
y .
):
(\d+\,?\d*\.?\d*)
$1%
+
(hay un espacio antes de eso + que se está recortando)
(espacio)var scope = app.activeDocument.selection.length ? app.activeDocument.selection : app.activeDocument.pageItems;
cambiar a
var scope = app.activeDocument.selection.length ? app.activeDocument.selection : app.activeDocument.textFrames;
activeDocument.textFrames
También apuntará a texto puntual, texto en una ruta, etc., o solo apuntará a marcos de texto con un cuadro delimitador fijo?
Guanhua Wang