Fragen Sie weiter nach der Regex-SegmentierungIch habe einen Fehler gemacht. Wenn Sie einen Code wie diesen schreiben, erhalten Sie nicht das richtige Ergebnis.
c=Regex("abcdef{:[[ghi]]:[{op},{q}]}", ":\[\[]\([^\]]*)\]", "[\1]");Brauchen, um:
[{op},{q}]So schreiben Sie JSL. Vielen Dank!
Betreff: Fragen Sie weiter nach der Regex-SegmentierungEs funktioniert auch nicht:
c=Regex("abcdef{:[[ghi]]:[{op},{q}]}", ":\[\[]{([^\]]*)\]", "[{\1]");Betreff: Fragen Sie weiter nach der Regex-SegmentierungSo würde ich es machen:
Names Default To Here( 1 );
x = "abcdef{:[[ghi]]:[{op},{q}]}";
c=word(1,word(3,x,":"),"]") || "]";Betreff: Fragen Sie weiter nach der Regex-SegmentierungHier ist eine mögliche Alternative:
c = Regex( "abcdef{:[[ghi]]:[{op},{q}]}", "\!\[(\{\w+\},*)+]" );Betreff: Fragen Sie weiter nach der Regex-SegmentierungEine andere Form:
Names Default to Here( 1 );
string = "abcdef{:[[ghi]]:[{op},{q}]}";
c = Regex( string, "\{:.+:(.+)\}", "\1" );Betreff: Fragen Sie weiter nach der Regex-SegmentierungDer obige Code für die tatsächlichen Daten ist immer noch nicht auf dem neuesten Stand.
Ich glaube nicht, dass ich den Schlüssel gefunden habe.

Bitte laden Sie Experten ein, die Anleitung fortzusetzen. Danke!
Betreff: Fragen Sie weiter nach der Regex-SegmentierungDer eigentliche Text ist viel komplexer als das Beispiel, das Sie gestellt haben und das wir gelöst haben.
Sie haben dieses Problem bereits gepostet. Ich habe dann versucht, den Text zuerst in eine JMP-Liste zu konvertieren und dann die Elemente zu durchlaufen, anstatt zu versuchen, mit dem gesamten Text zu arbeiten. JMP hat mich die ganze Zeit bekämpft und nichts, was ich versucht habe, hat funktioniert. Vielleicht weiß jemand anderes, wie man eine Liste bekommt. Es scheint so einfach zu sein. Ich denke, dass die Verarbeitung der Zeichenfolgen mit Regex () viel einfacher ist, wenn der Text in Listenelemente aufgeteilt wird.
Betreff: Fragen Sie weiter nach der Regex-SegmentierungEine andere Idee ist, einen Parser für eine verschachtelte Datenstruktur (Liste?) Zu entwerfen und zu schreiben, der über den Text gestreamt, die Daten erstellt und dann die gewünschten Werte sammelt.
Betreff: Fragen Sie weiter nach der Regex-SegmentierungIch weiß nicht genug.
Ich dachte, es wäre nur eine Unterteilung
Beginnen mit :[{
und ende mit dem zweiten}]
so kann man [{...}] und zwischen sich bekommen.
Es scheint, dass mein ursprüngliches Verständnis zu voreilig war.
Vielen Dank!
Betreff: Fragen Sie weiter nach der Regex-SegmentierungIch habe zwei orthogonale Codes in der VBA-Community, aber ich werde sie immer noch nicht in JSL-Code ändern.
Bitten Sie um fachkundige Beratung. Danke!
Sub t()
Set reg = CreateObject("vbscript.regexp")
reg.Pattern = "^(?:.*?(\[.*?]))*|."
reg.Global = True
Cells(1, 2) = reg.Replace(Cells(1, 1).Value, "$1")
End Sub
Betreff: Fragen Sie weiter nach der Regex-SegmentierungDer andere Code ist
"\[[^\[]+(?=}$)"
Betreff: Fragen Sie weiter nach der Regex-SegmentierungJMP 15 macht einen ziemlich guten Job mit diesen JSON-Daten (benennen Sie die Datei von .txt in .json um, es wird einfacher @Justin_Chilton ); JMP 14 scheint diesen JSON-Fall nicht richtig zu behandeln. Hier ist der JMP 15-Import unter Verwendung der besten Vermutung und Hinzufügen der Stapeloption:
Best Guess ist unter dem roten Dreieck Möglicherweise möchten Sie zwei Importe wie folgt ausführen:
Holen Sie sich die kleine Tabelle der Spaltennamen
Holen Sie sich die größere Datentabelle
Sie können nicht gewünschte Spalten weglassen. Sie können die Spaltennamen aus der kleinen Tabelle auf die große Tabelle anwenden und den Wert 0 in 2018 umbenennen.
Betreff: Fragen Sie weiter nach der Regex-SegmentierungVielen Dank für die Hilfe von Experten!
Ich habe JMP15 heruntergeladen und gelernt, wie man das macht.
Ich habe verschiedene Methoden zum Abrufen der Daten verglichen. Ich verstehe den Unterschied zwischen ihnen.

Betreff: Fragen Sie weiter nach der Regex-SegmentierungWeil ich so etwas durchschleifen muss.
Ich möchte immer noch lernen, wie ich Regularisierung verwende, um überschüssige Daten zu entfernen und nützliche Daten für die kontinuierliche Verarbeitung mit JSL aufzubewahren. Vielen Dank!
Betreff: Fragen Sie weiter nach der Regex-SegmentierungWenn die Daten json oder xml sind, sollten Sie den json / xml-Parser von JMP verwenden. Es ist nicht einfach, einen Parser für diese verschachtelten Strukturen zu schreiben, und Regex allein reicht nicht aus. Das Importieren von xml / json in eine Tabelle und das anschließende Suchen von Zeile und Spalte ist eine gute Wahl.
Wenn die Daten auf andere Weise verarbeitet werden müssen, können Sie dies mit einer einfachen JSL-Schleife und einer Reihe von Regex-Tests tun.
txt = loadtextfile(...);
ok=1;
while( ok,
... try various regex that remove a bit of data from txt ... set ok to 0 if nothing works.
)
Das funktioniert für kleine Dateien und kann einfach gewartet werden. Eine große Datei mit vielen Datenbits ist jedoch zu langsam, da beim Entfernen eines Datenbits aus einer großen txt-Zeichenfolge bei jedem Entfernen viele Daten kopiert werden. (Es ist ein n ^ 2-Problem: Wenn Sie die Dateigröße verdoppeln, wird die Laufzeit vervierfacht.)
Bei großen Dateien empfiehlt es sich, eine einzelne Musterübereinstimmung zu schreiben, bei der die Eingabezeichenfolge nicht geändert wird. Sie können reguläre Ausdrücke oder Muster innerhalb eines patRepeat () - Musters verwenden, das der gesamten Datei entspricht, und Sie werden patTest (... ; 1) eine JSL innerhalb des Matches ausführen, die die analysierten Ergebnisse in einer JSL-Matrix oder einer Liste oder einem assoziativen Array speichert. Bevor JMP einen eingebauten JSON-Parser hatte, @XanGregg und ich schrieb einige JSL zum Parsen von JSON-Dateien . Es ist immer noch ein gutes Beispiel, aber der eingebaute Parser von JMP ist besser.
Hier sind einige andere Beiträge mit JSL, mit denen eine Datei analysiert wird patMatch (... patRepeat (Muster) ... ) .
https://community.jmp.com/t5/Uncharted/The-Other-Kind-of-Model/ba-p/231703 Analysieren einer Datendatei für ein 3D-Modell
https://community.jmp.com/t5/Uncharted/Web-Logs/ba-p/29389 Analysieren einer Apache-Protokolldatei
https://community.jmp.com/t5/Uncharted/WordNet/ba-p/28984 Analysieren der Wordnet-Datei
https://community.jmp.com/t5/Uncharted/Pronounce-Elephant/ba-p/21272 Analysieren der CMU-Phonemdatei
Ich verwende oft die Funktion >> log (), um komplizierte Musterübereinstimmungen zu debuggen.
https://community.jmp.com/t5/Uncharted/Backtracking-Secrets/ba-p/20984 Verwendung der >> log () zum Debuggen
und
https://community.jmp.com/t5/Uncharted/Pattern-Matching/ba-p/21005 Einführung zu patMatch ()
https://community.jmp.com/t5/Uncharted/Regex/ba-p/21008 Einführung zu regex ()