正規表現のセグメンテーションについて質問を続ける私は間違いを犯しました。このようなコードを書くと、正しい結果が得られません。
c=Regex("abcdef{:[[ghi]]:[{op},{q}]}", ":\[\[]\([^\]]*)\]", "[\1]");取得する必要があります:
[{op},{q}]では、JSLの書き方。 どうもありがとうございました!
Re:正規表現のセグメンテーションについて質問を続けますデータがjsonまたはxmlの場合は、JMPのjson/xmlパーサーを使用する必要があります。 これらのネストされた構造のパーサーを作成するのは簡単ではなく、正規表現だけでは十分ではありません。 xml / jsonをテーブルにインポートしてから、行と列を見つけることは素晴らしい選択です。
データを他の方法で処理する必要がある場合は、単純なJSLループと一連の正規表現テストを使用して次のように処理できます。
txt = loadtextfile(...);
ok=1;
while( ok,
... try various regex that remove a bit of data from txt ... set ok to 0 if nothing works.
)
これは小さなファイルで機能し、簡単に保守できます。 ただし、大きなtxt文字列から少しのデータを削除すると、削除するたびに大量のデータがコピーされるため、多くのビットのデータを含む大きなファイルは遅すぎます。 (これはn ^ 2の問題です。ファイルサイズを2倍にすると、実行時間の4倍になります。)
大きなファイルの場合、入力文字列を変更しない単一のパターンマッチを作成するのが最適です。 ファイル全体に一致するpatRepeat()パターン内で正規表現またはパターンを使用でき、patTest(...; 1)を使用して、解析結果をJSLマトリックスまたはリストに保存する一致内でJSLを実行します。または連想配列。 JMPにjsonパーサーが組み込まれる前は、 @XanGreggそして私はいくつか書いたjsonファイルを解析するJSL 。 これは依然として優れた例ですが、JMPの組み込みパーサーの方が優れています。
これは、を使用してファイルを解析するJSLを持つ他の投稿です。 patMatch(... patRepeat(パターン)...) 。
https://community.jmp.com/t5/Uncharted/The-Other-Kind-of-Model/ba-p/231703 3Dモデルのデータファイルの解析
https://community.jmp.com/t5/Uncharted/Web-Logs/ba-p/29389 Apacheログファイルの解析
https://community.jmp.com/t5/Uncharted/WordNet/ba-p/28984ワードネットファイルの解析
https://community.jmp.com/t5/Uncharted/Pronounce-Elephant/ba-p/21272 CMU音素ファイルの解析
>> log()関数を使用して、複雑なパターンの一致をデバッグすることがよくあります。
https://community.jmp.com/t5/Uncharted/Backtracking-Secrets/ba-p/20984を使用して>> log()デバッグ用
と
https://community.jmp.com/t5/Uncharted/Pattern-Matching/ba-p/21005の紹介patMatch()
https://community.jmp.com/t5/Uncharted/Regex/ba-p/21008の紹介正規表現()
Re:正規表現のセグメンテーションについて質問を続けます私はこのようなものをループする必要があるからです。
正則化を使用して余分なデータを削除し、JSLでの継続的な処理に役立つデータを保持する方法を学びたいと思っています。ありがとうございます。
Re:正規表現のセグメンテーションについて質問を続けます専門家の助けをありがとう!
JMP15をダウンロードして、その方法を学びました。
データを取得するためのさまざまな方法を比較しました。それらの違いを理解しています。

Re:正規表現のセグメンテーションについて質問を続けますJMP 15は、このJSONデータでかなりうまく機能します(ファイルの名前を.txtから.jsonに変更すると、より簡単になります) @Justin_Chilton ); JMP 14は、このjsonケースを正しく処理していないようです。 最良の推測を使用し、スタックオプションを追加したJMP15のインポートは次のとおりです。
Best Guess is under the red triangleベストゲスは赤い三角形の下にあります次のように2つのインポートを実行することをお勧めします。
get the little table of column names列名の小さなテーブルを取得します
get the bigger table of dataより大きなデータテーブルを取得する
不要な列は省略できます。 小さなテーブルの列名を大きなテーブルに適用して、value0の名前を2018に変更できます。
Re:正規表現のセグメンテーションについて質問を続けます他のコードは
"\[[^\[]+(?=}$)"
Re:正規表現のセグメンテーションについて質問を続けますVBAコミュニティで2つの直交コードを取得しましたが、それでもJSLコードに変更しません。
専門家の指導を求めてください。ありがとう!
Sub t()
Set reg = CreateObject("vbscript.regexp")
reg.Pattern = "^(?:.*?(\[.*?]))*|."
reg.Global = True
Cells(1, 2) = reg.Replace(Cells(1, 1).Value, "$1")
End Sub
Re:正規表現のセグメンテーションについて質問を続けますよくわかりません。
ただの仕切りだと思った
皮切りに :[{
そして2番目で終わる}]
したがって、[{...}]とそれらの間を取得できます。
私の当初の理解は速すぎたようです。
ありがとう!
Re:正規表現のセグメンテーションについて質問を続けますもう1つのアイデアは、ネストされたデータ構造(リスト?)のパーサーを設計および記述して、テキストをストリーミングし、データを構築してから、目的の値を収集することです。
Re:正規表現のセグメンテーションについて質問を続けます実際のテキストは、あなたが提起して解決した例よりもはるかに複雑です。
以前にこの問題を投稿しました。 次に、テキスト全体を処理するのではなく、最初にテキストをJMPリストに変換してから、アイテムを繰り返し処理しようとしました。 JMPは私とずっと戦いましたが、私が試したものは何も機能しませんでした。 おそらく他の誰かがリストを取得する方法を知っています。 とてもシンプルなようです。 Regex()を使用して文字列を処理する方が、テキストをリスト項目に分割する方がはるかに簡単だと思います。
Re:正規表現のセグメンテーションについて質問を続けます上記の実際のデータのコードは、まだ完全ではありません。
鍵が見つからなかったと思います。

専門家を招いて指導を続けてください。ありがとうございます!
Re:正規表現のセグメンテーションについて質問を続けます別の形式:
Names Default to Here( 1 );
string = "abcdef{:[[ghi]]:[{op},{q}]}";
c = Regex( string, "\{:.+:(.+)\}", "\1" );Re:正規表現のセグメンテーションについて質問を続けます考えられる代替案は次のとおりです。
c = Regex( "abcdef{:[[ghi]]:[{op},{q}]}", "\!\[(\{\w+\},*)+]" );Re:正規表現のセグメンテーションについて質問を続けますこれが私がそれをする方法です:
Names Default To Here( 1 );
x = "abcdef{:[[ghi]]:[{op},{q}]}";
c=word(1,word(3,x,":"),"]") || "]";Re:正規表現のセグメンテーションについて質問を続けますそれも機能しません:
c=Regex("abcdef{:[[ghi]]:[{op},{q}]}", ":\[\[]{([^\]]*)\]", "[{\1]");