Usa regex per trovare una sottostringa da una stringaHo una variabile che memorizza la stringa seguente e voglio trovare il testo colorato in rosso e sostituirlo con < dt, colList [i] >. Voglio usare regex in quanto la stringa può variare secondo i requisiti, ma il modello di stringa sarebbe simile (non completamente identico).
Stringa:
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} )}
)
)
); ";Grazie 
Ri: Usa regex per trovare una sottostringa da una stringaPuoi usare 'RegEx ()' ma, in alternativa, 'Eval Insert Into ()' - Serach per questo in 'Aiuto> Scripting Index' per vedere un esempio.
FWIW, preferisco mantenere le espressioni come espressioni, perché in tal caso l'editor fornirà ancora il codice colore delle parole chiave e così via. Per vedere questo approccio, cerca 'Sostituisci Into ()'.
Ri: Usa regex per trovare una sottostringa da una stringaGrazie @ian_jmp per un aiuto.
Non so come funzionerà l'approccio basato sulla codifica dei colori. Inoltre, devo ripetere questo compito molte volte e la regex potrebbe essere l'approccio più robusto. Se possibile, puoi aiutarci a risolverlo usando regex () altrimenti ti preghiamo di spiegare come funziona la codifica dei colori.
GrazieRi: Usa regex per trovare una sottostringa da una stringaPenso che tu voglia sostituire la variabile Y che hai nella tua stringa. Ma è un po 'difficile da dire, dal momento che se si guarda in alto, tutta la stringa è resa viola a causa del software utilizzato per visualizzare la pagina web.
Quindi potresti forse ripetere esattamente quello che devi fare, per favore?
Ri: Usa regex per trovare una sottostringa da una stringa@ian_jmp
Ho una variabile "str" che contiene la seguente stringa. Voglio sostituire <: Sen.Win.sta> con < dt, colList [i] >. Voglio usare regex perché la stringa può essere cambiata in base al requisito, ma il pattern sarebbe lo stesso.
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} )}
)
)
);Ri: Usa regex per trovare una sottostringa da una stringaOK. Se questo è il requisito, puoi fare qualcosa del genere:
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;
);
In questo caso il comando Graph Builder è un'espressione (non contenuta all'interno di una stringa) e non è necessario preoccuparsi di "SubstituteInto ()".
Ri: Usa regex per trovare una sottostringa da una stringaIl mio ultimo requisito è lo stesso, ma per ottenerlo ogni volta devo cambiare manualmente il valore nella variabile Y in (dt, ColList [i]) ogni volta per una nuova tabella / nuovo tipo di grafico. Quindi, voglio automatizzare questo processo per cambiare il valore della variabile Y. Posso usare qualsiasi metodo. Penso che regex sia il metodo migliore. Quindi, questo è il motivo per cui voglio usare regex.
Il mio requisito principale per trovare e sostituire automaticamente la variabile Y.
Grazie @ian_jmp Ri: Usa regex per trovare una sottostringa da una stringaHo già espresso la mia preferenza per lavorare direttamente con le espressioni, piuttosto che stringere le stringhe e analizzare il risultato in un'espressione. Sono sicuro che il metodo nel mio post precedente è facilmente adattato per fare ciò che vuoi.
Ma se vuoi usare espressioni regolari e stringhe allora forse qualcosa del tipo:
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);
Usa 'Aiuto> Scripting Index' e cerca le primitive JSl per vedere opzioni ed esempi.
Ri: Usa regex per trovare una sottostringa da una stringaGrazie @ian_jmp
Apprezzo il tuo aiuto.