Use expresiones regulares para encontrar una subcadena de una cadenaTengo una variable que almacena la siguiente cadena y quiero encontrar el texto de color rojo y reemplazarlo con < dt, colList [i] >. Quiero usar expresiones regulares ya que la cadena puede variar según el requisito, pero el patrón de cadena sería similar (no completamente idéntico).
Cuerda:
Str = "Graph Builder(
Size( 1887, 882 ),
Show Control Panel( 0 ),
Title Text Color( "Red" ),
Graph Spacing( 2 ),
Spacing Borders( 1 ),
Variables(
X( :START_TIME ),
Y( <FONT color="#FF0000">:Sen.win.sta</FONT> ),
Group X( :NAME ),
Group X( :GROUP )
),
Elements( Points( X, Y, Legend( 3 ) ), Line( X, Y, Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
OutlineBox,
{Set Title( "TEST" )}
),
Dispatch(
{},
"START_TIME",
ScaleBox,
{Min( 1 ), Max( 2000 ),
Interval( "Numeric" ), Inc( 20 ), Minor Ticks( 0 ),
Label Row( Label Orientation( "Vertical" ) )}
),
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {3, [-4], 4, [-1]} ), Position( {-4, -1} )}
)
)
); ";Gracias 
Re: Usa expresiones regulares para encontrar una subcadena de una cadenaPuede usar 'RegEx ()' pero, como alternativa, 'Eval Insert Into ()' - Seleccione esta opción en 'Ayuda> Índice de secuencias de comandos' para ver un ejemplo.
FWIW, prefiero mantener las expresiones como expresiones, porque entonces el editor seguirá proporcionando la codificación por colores de las palabras clave y así sucesivamente. Para ver ese enfoque, busque 'Sustituir en ()'.
Re: Usa expresiones regulares para encontrar una subcadena de una cadenaGracias @ian_jmp por ayuda
No sé cómo funcionará el enfoque de codificación de colores. Además, tengo que repetir esta tarea muchas veces y la expresión regular podría ser el enfoque más sólido. Si es posible, ¿puede ayudarlo a resolverlo utilizando regex (?) De lo contrario, explique cómo funcionará la codificación por colores.
GraciasRe: Usa expresiones regulares para encontrar una subcadena de una cadenaCreo que quieres reemplazar la variable Y que tienes en tu cadena. Pero es un poco difícil de decir, ya que si miras arriba, toda la cadena se vuelve púrpura debido al software que se usa para mostrar la página web.
Entonces, ¿quizás podría reiterar exactamente lo que necesita hacer, por favor?
Re: Usa expresiones regulares para encontrar una subcadena de una cadena@ian_jmp
Tengo una variable "str" que contiene la siguiente cadena. Quiero reemplazar <: Sen.Win.sta> con < dt, colList [i] >. Quiero usar expresiones regulares ya que la cadena puede cambiar según el requisito, pero el patrón sería el mismo.
Graph Builder(
Size( 1887, 882 ),
Show Control Panel( 0 ),
Title Text Color( "Red" ),
Graph Spacing( 2 ),
Spacing Borders( 1 ),
Variables(
X( :START_TIME ),
Y( <FONT color="#FF0000">:Sen.win.sta</FONT> ),
Group X( :NAME ),
Group X( :GROUP )
),
Elements( Points( X, Y, Legend( 3 ) ), Line( X, Y, Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
OutlineBox,
{Set Title( "TEST" )}
),
Dispatch(
{},
"START_TIME",
ScaleBox,
{Min( 1 ), Max( 2000 ),
Interval( "Numeric" ), Inc( 20 ), Minor Ticks( 0 ),
Label Row( Label Orientation( "Vertical" ) )}
),
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {3, [-4], 4, [-1]} ), Position( {-4, -1} )}
)
)
);Re: Usa expresiones regulares para encontrar una subcadena de una cadenaDE ACUERDO. Si ese es el requisito, podrías hacer algo como esto:
NamesDefaultToHere(1);
// Get some data
dt = Open("$SAMPLE_DATA/Probe.jmp");
// Get some columns to loop over
yColList = dt << getColumnNames(Continuous);
// Loop over columns
for (y=1, y<=NItems(yColList), y++,
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :Lot ID ), Y( yColList[y] ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
Wait(1);
Report(gb) << closeWindow;
);
En este caso, el comando Graph Builder es una expresión (no se mantiene dentro de una cadena), y no necesita molestarse con 'SubstituteInto ()'.
Re: Usa expresiones regulares para encontrar una subcadena de una cadenaMi requisito final es el mismo, pero para obtener esto cada vez que tenga que cambiar manualmente el valor en la variable Y a (dt, ColList [i]) cada vez que aparezca una nueva tabla / nuevo tipo de gráfico. Por lo tanto, quiero automatizar este proceso para cambiar el valor de la variable Y. Puedo usar cualquier método. Creo que regex es el mejor método. Entonces, esa es la razón por la que quiero usar expresiones regulares.
Mi principal requisito para encontrar y reemplazar automáticamente la variable Y.
Gracias @ian_jmp Re: Usa expresiones regulares para encontrar una subcadena de una cadenaYa he expresado mi propia preferencia por trabajar con expresiones directamente, en lugar de mezclar cadenas y analizar el resultado en una expresión. Estoy seguro de que el método en mi publicación anterior se adapta fácilmente para hacer lo que quieras.
Pero, si quieres usar expresiones y cadenas regulares, entonces tal vez algo como:
txt = "The quick brown fox jumped over the lazy dog";
matchTxt = "the";
replaceTxt = "a";
newTxt = Regex(txt, matchTxt, replaceTxt, GLOBALREPLACE, IGNORE CASE );
Print(txt, newTxt);
Utilice 'Ayuda> Índice de scripts' y busque primitivos JSl para ver opciones y ejemplos.
Re: Usa expresiones regulares para encontrar una subcadena de una cadenaGracias @ian_jmp
Aprecio tu ayuda.