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$2or替换\1\2

如果您的文本编辑器支持带有环视(lookahead 和lookbehind 断言)的正则表达式,您可以使用以下正则表达式并替换为空字符串。

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