0

jsonファイルのフィールドとして一連の実行パスがあります。ファイルの各行はレコードを表し、ファイルの行は次のように構成されています。

"2596192":[{"jobID":"2596192","account":"TG-MCB110136","user":"px","pkgT":{"mkl/10.0":{"libA":  
    ["libmkl_lapack.so"],"flavor":["default"]}},"startEpoch":"1338439337","runTime":"1337","execType":"use r:binary","exec":"/work/01779/plsawle/amber/amber10/bin/sander.MPI","numNodes":"1","sha1":"1f28c333d0f1534ffd8c67c26edff917d7980e48","execEpoch":1313768808,"execModify":"Fri Aug 19 10:46:48 2011","startTime":"Wed May 30 23:42:17 2012","numCores":"16","sizeT":{"bss":"82704936","text":"5722390","data":"489580"}}],

ご覧のとおり、「exec」フィールドの実行パスは完全修飾パスです。ただし、正規表現を使用してパスの先頭を削除し、実行可能ファイルの実際の名前を保存したいと思います。たとえば、代わりに...

 "exec":"/work/01779/plsawle/amber/amber10/bin/sander.MPI"  

フィールドになりたいのですが…

"exec":sander.MPI

各exec値の長さは、パス内の「/」の数と同様に任意であるため、この変換を行うための正規表現の構成方法がわかりません。誰かが解決策を勧めてもらえますか?ありがとう!

4

1 に答える 1

0

次の正規表現は、実行可能ファイル名のみに一致します

[^/]+(?:\.\w+)?$

javascriptオブジェクトでの使用例

var obj = { exec : "/work/01779/plsawle/amber/amber10/bin/sander.MPI" };
var execName = obj.exec.match(/[^/]+(?:\.\w+)?$/i);

編集

完全なJSONファイルを解析していることに気づきませんでした。次の正規表現が必要です。

("exec":").+?([^/]+?(?:\.\w+)?")

私はtextWranglerに精通していませんが、通常は$1$2またはに置き換えます\1\2

テキストエディタがルックアラウンド(ルックアヘッドおよびルックビハインドアサーション)で正規表現をサポートしている場合は、次の正規表現を使用して空の文字列に置き換えることができます。

(?<="exec":").+?(?=[^/]+?(?:\.\w+)?")
于 2013-03-07T03:20:41.367 に答える