Suche nach Teilzeichenfolgen aus verschiedenen ZeichenfolgenIch habe eine Spalte mit dem Namen des Fehlers, die alle möglichen Zeichenfolgen enthält. Ich suche gerne nach Fehlercodes, die mit „ex“ beginnen. Der Fehlercode ist eine 10-stellige Zeichenfolge, die mit „ex“ beginnt. Und ich trage den 1. Fehlercode in die Spalte „1. Code“ ein, alle Fehlercodes in die Spalte „Alle Codes“. Welche Formel ist für beide Spalten festgelegt? Tut mir leid, dass ich Sie noch einmal störe. Ich muss meine Arbeit zunächst schnell abschließen und mir dann Zeit nehmen, das JMP-Hilfedokument zu lernen.

Grundlegende Datenanalyse und ModellierungBetreff: Suche nach Teilzeichenfolgen in verschiedenen ZeichenfolgenDieser Beitrag könnte helfen , Fehlerteilcode aus unstrukturierter Zeichenfolge zu extrahieren
Betreff: Suche nach Teilzeichenfolgen in verschiedenen ZeichenfolgenHier ist eine Möglichkeit, diese beiden Spalten zu erstellen
Formel für :fst-Code
start = contains(:Failure,"0x");
if(start>0,substr(:Failure,start,start+10),"");
Formel für: Alle Codes
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, ",");Betreff: Suche nach Teilzeichenfolgen in verschiedenen ZeichenfolgenIch weiß Ihre zeitnahe Hilfe wirklich zu schätzen. Mit der Formel werden Fehlercodes erkannt, aber es werden auch einige andere Zeichen angezeigt. Ich habe es mit left() gelöst. Aber ich würde gerne wissen, warum die anderen Zeichen dort angezeigt werden?

Betreff: Suche nach Teilzeichenfolgen in verschiedenen ZeichenfolgenDa ich Ihre Datentabelle nicht zur Verfügung habe, um das Problem zu beheben, bin ich mir nicht sicher, wo das Problem liegt. Probieren Sie diese Änderung aus und prüfen Sie, ob sie besser funktioniert.
start = contains(:Failure,"0x");
x="";
if(start>0,x=substr(:Failure,start,start+10),"");
x;
Betreff: Suche nach Teilzeichenfolgen in verschiedenen Zeichenfolgen@txnelson, danke für Ihre Zeit zu diesem Thema. Ich habe es noch einmal versucht, es schlägt immer noch fehl. Hier ist die Datentabelle für Ihr Debug.
Betreff: Suche nach Teilzeichenfolgen in verschiedenen ZeichenfolgenMein Fehler,
Die Länge des Substr-Elements sollte Start sein, nicht Start+10.
Erster Code
start = Contains( :Failure, "0x" );
If( start > 0,
Substr( :Failure, start, 10 ),
""
);
Alle Codes
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, "," );Betreff: Suche nach Teilzeichenfolgen in verschiedenen Zeichenfolgentausend Dank!
Betreff: Suche nach Teilzeichenfolgen in verschiedenen ZeichenfolgenWenn die Möglichkeit besteht, dass bei Ihnen Nachrichten eingemischt sind, die mit 0x beginnen, aber keine Fehlercodes sind, könnte einfaches „Contains“ funktionieren, aber anhand der Beispiele, die Sie uns bereitgestellt haben, scheint dies nicht der Fall zu sein (oder wenn Sie beispielsweise 0x123456 haben, was kürzer ist als der von Ihnen definierte Fehlercode).
Wenn dies der Fall ist, würde ich mir den regulären Ausdruck ansehen (Sie können eine ähnliche Idee mit While-Schleifen verwenden, wie Jim es mit „contains“ gezeigt hat). Sie müssen jedoch die zulässigen Zeichen gut kennen, um ein robustes Muster für eine korrekte Übereinstimmung zu erstellen.
Betreff: Suche nach Teilzeichenfolgen in verschiedenen Zeichenfolgen@jthi, danke für deine Kommentare. Ich versuche, mit Regex nach der Teilzeichenfolge zu suchen, die mit 0x beginnt. Basierend auf deinem empfohlenen Beitrag ist es eine gute Idee für „ Neue Spalte durch Textübereinstimmung “. Ich denke darüber nach, wie ich das Muster für den Fehlercode erstellen kann (oder der Fehlercode ist nicht auf 10 Zeichen begrenzt). Die Anleitung zu Rückverweisen und Erfassungsgruppen für Regex kann mir helfen, das zugehörige JSL zu verstehen, aber es ist ein bisschen schwer für mich, JSL zu schreiben. Ich denke, je mehr JSL-Beispiele ich lese, desto eher lerne ich, JSL zu schreiben. Zurück zum Thema: Könntest du mir den Gefallen tun, das Regex-Muster des Fehlercodes zu zeigen? In deinem Beitrag ist es zum Beispiel
failure_pattern = "[A-Z]+\d+[A-Z]?"
Betreff: Suche nach Teilzeichenfolgen in verschiedenen ZeichenfolgenAusgehend von der von Ihnen bereitgestellten Beispieldatentabelle lautet die Formel zum Herausziehen des ersten Fehlercodes mithilfe der Funktion Regex():
Regex( :Failure, "[A-Z]+\d+[A-Z]?" )
Die Definition und Beispiele der Funktion Regex() finden Sie im Scripting Index
Betreff: Suche nach Teilzeichenfolgen in verschiedenen ZeichenfolgenJSL hat möglicherweise nicht alle Flags ( Regex: Optionen für alle Flags hinzufügen , Flag zu Regex Match() hinzufügen, um alle nicht überlappenden Vorkommen des Musters zu finden ), akzeptiert aber dennoch ähnliche Muster. Verwenden Sie etwas wie https://regex101.com/ , um Ihre Regex-Muster zu testen (wenn Sie nicht sicher sind, ob sie Daten an einen Server senden, verwenden Sie keine echten Daten, es sei denn, Sie können sie freigeben) und probieren Sie es dann in JSL aus. Websites wie regex101 erklären Ihnen das Muster.
Ich habe keine richtige Definition Ihrer Fehlercodes und kann daher keine guten Muster als Ausgangspunkt angeben. Ich weiß nur, dass es mit 0x beginnt, aber ich müsste die zulässigen Zeichen kennen, ob es eine Reihenfolge für diese zulässigen Zeichen gibt und wie man feststellt, wann es endet (und die Länge, falls es eine gibt).
Betreff: Suche nach Teilzeichenfolgen in verschiedenen Zeichenfolgenheute habe ich mir etwas Zeit genommen, um die Definition und Beispiele der Funktion Regex() im Scripting Index zu lesen, und habe die Regex-Musterstruktur wie ([a-zA-Z])\s([0-9]) gelernt. Es ist wunderbar, mitzuteilen, dass die Verwendung von https://regex101.com/ die Regex-Muster testet.
Regex() oder Regex match() ist eine etwas komplizierte Funktion. Ich muss mehr Beispiele aus der Community finden, um die Verwendung von Regex() zu üben. Vielen Dank für das Teilen der Links.