cerca sottostringa da varietà di stringheHo una colonna con il nome dell'errore, che contiene tutte le varietà di stringhe. Mi piace cercare il codice di errore con inizio "ex". il codice di errore è una stringa di 10 caratteri con inizio "ex". e metto il primo codice di errore nella colonna di "1° codice", tutti i codici di errore nella colonna di "tutti i codici". quale formula è impostata su entrambe le colonne? mi dispiace disturbare di nuovo. Devo prima fare rapidamente il mio lavoro in mani chiuse, poi prendermi del tempo per imparare il documento di aiuto di JMP.

Analisi e modellazione dei dati di baseRe: cerca sottostringa da varietà di stringheQuesto post potrebbe aiutare a estrarre il codice della parte di errore dalla stringa non strutturata
Re: cerca sottostringa da varietà di stringheEcco un modo per creare queste 2 colonne
Formula per il codice :fst
start = contains(:Failure,"0x");
if(start>0,substr(:Failure,start,start+10),"");
Formula per :Tutti i codici
theCodes = {};;
theString = :Failure;
While( Contains( theString, "0x" ) > 0,
start = Contains( theString, "0x" );
Insert Into( theCodes, Substr( theString, start, start + 10 ) );
theString = Substr( theString, start + 10 );
);
concat items(theCodes, ",");Re: cerca sottostringa da varietà di stringheApprezzo molto la tua tempestiva assistenza. Con la formula, i codici di errore vengono rilevati ma vengono visualizzati anche altri caratteri. Ho risolto usando left(). Ma vorrei sapere perché vengono visualizzati gli altri caratteri lì?

Re: cerca sottostringa da varietà di stringheSenza avere la tua tabella dati da usare per il debug del problema, non sono sicuro di quale sia il problema. Prova questa modifica e vedi se funziona meglio.
start = contains(:Failure,"0x");
x="";
if(start>0,x=substr(:Failure,start,start+10),"");
x;
Re: cerca sottostringa da varietà di stringhe@txnelson grazie per il tempo dedicato all'argomento. Ho riprovato, ma non funziona. Ecco la tabella dati per il tuo debug.
Re: cerca sottostringa da varietà di stringheIl mio errore,
La lunghezza dell'elemento Substr dovrebbe essere Start, non Start+10.
Primo codice
start = Contains( :Failure, "0x" );
If( start > 0,
Substr( :Failure, start, 10 ),
""
);
Tutti i codici
theCodes = {};
theString = :Failure;
While( Contains( theString, "0x" ) > 0,
start = Contains( theString, "0x" );
Insert Into( theCodes, Substr( theString, start, 10 ) );
theString = Substr( theString, start + 10 );
);
Concat Items( theCodes, "," );Re: cerca sottostringa da varietà di stringheGrazie mille!
Re: cerca sottostringa da varietà di stringheSe è possibile che tu abbia messaggi misti che iniziano con 0x ma non sono semplici codici di errore, Contains potrebbe funzionare, ma in base agli esempi che ci hai fornito, non sembra essere questo il caso (o se hai ad esempio 0x123456 che è più corto di quello che hai definito come codice di errore).
Se questo dovesse rivelarsi il caso, darei un'occhiata al Regex (puoi usare un'idea simile con il ciclo While come Jim ha mostrato con contains). Ma devi avere una buona conoscenza dei caratteri consentiti per creare un pattern robusto per un abbinamento corretto.
Re: cerca sottostringa da varietà di stringhe@jthi grazie per i tuoi commenti. Sto cercando di usare Regex per cercare la sottostringa che inizia con 0x. In base al tuo post consigliato, è una buona idea per " New Column by Text Matching ". Sto pensando a come costruire il pattern per il codice di errore (o il codice di errore non è limitato a 10 caratteri). Le istruzioni di Backreferences and Capturing Groups for Regex possono aiutarmi a capire il JSL correlato, ma è un po' difficile per me scrivere JSL. Penso che più esempi JSL leggo, prima imparerò a scrivere JSL. Tornando all'argomento, potresti farmi un favore e mostrarmi il pattern Regex del codice di errore? Ad esempio nel tuo post, è
failure_pattern = "[A-Z]+\d+[A-Z]?"
Re: cerca sottostringa da varietà di stringheData la tabella dati di esempio fornita, la formula per estrarre il primo codice di errore utilizzando la funzione Regex() è
Regex( :Failure, "[A-Z]+\d+[A-Z]?" )
La definizione e gli esempi della funzione Regex() si trovano nell'indice di scripting
Re: cerca sottostringa da varietà di stringheJSL potrebbe non avere tutti i flag ( Regex: aggiungi opzioni per tutti i flag , Aggiungi flag a Regex Match() per trovare tutte le occorrenze non sovrapposte del pattern ), ma accetta comunque pattern simili. Usa qualcosa come https://regex101.com/ per testare i tuoi pattern regex (se non sei sicuro che invieranno dati a un server, non usare dati reali a meno che tu non possa condividerli) e poi provalo in JSL. Siti web come regex101 ti spiegano il pattern.
Non ho una definizione corretta dei tuoi codici di errore, quindi non posso fornire buoni modelli da cui iniziare. So solo che inizia con 0x, ma avrei bisogno di sapere i caratteri consentiti, se c'è un ordine per questi caratteri consentiti e come determinare quando finisce (e la lunghezza, se ce n'è una).
Re: cerca sottostringa da varietà di stringheoggi mi sono preso un po' di tempo per leggere la definizione e gli esempi della funzione Regex() che si trovano nello Scripting Index e ho imparato la struttura del pattern Regex come ([a-zA-Z])\s([0-9]). È meraviglioso condividere che l'utilizzo di https://regex101.com/ testa i pattern Regex.
Regex() o Regex match() è una funzione un po' complicata. Ho bisogno di trovare altri esempi dalla comunità per mettere in pratica l'uso di Regex(). Grazie mille per aver condiviso i link.