正则表达式删除JSON文件中的部分文件名

时间:2013-03-07 03:16:22

标签: regex json

我有一系列执行路径作为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值的长度是任意的,路径中的“/”数也是如此,我不确定如何构造正则表达式来进行这种转换。有人可以推荐一个解决方案吗?谢谢!

1 个答案:

答案 0 :(得分:0)

以下正则表达式仅匹配可执行文件名

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

使用javascript对象的示例

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

修改

我没有意识到你我们正在解析一个完整的JSON文件,你需要以下Regex

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

我对textWrangler不熟悉,但通常会用$1$2\1\2替换。

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

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