【问题标题】:Regular Expression to print only executable not full path正则表达式仅打印可执行文件而不是完整路径
【发布时间】:2013-04-16 02:34:35
【问题描述】:

我有一组键/值对,使用完全限定名称列出可执行文件,如下所示:

  ["exec"] = "/share/home/00288/tg455591/NAMD_2.8b3/NAMD_2.8b3_Linux-x86_64-MVAPICH-Intel-Ranger/namd2",

但是,我想取出目录位置,只打印可执行文件,如下:

  ["exec"] = "namd2",

如何构造正则表达式来进行此更改?请记住,文件中的所有可执行文件都是不同的,但它们具有相似的格式。该文件的大小约为 6000 行。提前致谢。

【问题讨论】:

  • 我认为[^/]*$ 会匹配它,但这取决于正则表达式的风格。你用的是什么工具?
  • 为什么需要正则表达式?你为什么不直接在/ 上分手?
  • 我在 TextWrangler 应用程序中使用 grep
  • 我不拆分 / 因为 / 的数量因行而异
  • 为了澄清,您只需要"/share/home/00288/tg455591/NAMD_2.8b3/NAMD_2.8b3_Linux-x86_64-MVAPICH-Intel-Ranger/namd2"namd2 匹配,不是吗?你也必须匹配 key ["exec"] 吗?

标签: regex text expression textwrangler


【解决方案1】:

这个正则表达式成功了:

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

替换为:

\1\2

【讨论】:

    【解决方案2】:

    试试这个找到:

    (?<="exec"] = ")[^"]*?/([^/"]+)(?=")
    

    这个要替换:

    \1
    

    (或 1 美元)

    【讨论】:

      【解决方案3】:

      如果我正确理解了这个问题,这个sed 命令就可以解决问题:

      sed 's|= .*/|= "|'
      

      【讨论】:

      • sed 's|= .*/|= "\' lariatData-sgeT-2012-05-01_2.lua sed: 1: "s|= .*/|= "\": 未终止正则表达式中的替换是我尝试 sed 命令时遇到的错误
      • @amber4478:是"|',不是"\'
      猜你喜欢
      • 2022-07-15
      • 1970-01-01
      • 2012-03-01
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多