【问题标题】:regexp: how to remove the beginning of the path正则表达式:如何删除路径的开头
【发布时间】:2017-07-25 10:22:46
【问题描述】:

我有一个解析 gcc 编译输出的正则表达式:

^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$

第一个子表达式 - ^(..[^:]*) 标记发生错误的文件。

例如,对于这个输入:

main.c:1156:13: error: invalid storage class

它会标记

main.c

对于这个输入:

folder/main.c:1156:13: error: invalid storage class

它会标记

folder/main.c

如何更改第一个子表达式以仅标记文件名而不标记完整路径?

【问题讨论】:

    标签: regex sublimetext3


    【解决方案1】:

    我建议将(..[^:]*) 替换为(?:[^\r\n:]*/)?([^:\r\n]*)

    ^(?:[^\r\n:]*/)?([^:\r\n]*):([0-9]+):?([0-9]+)?:? (.*)$
     ^^^^^^^^^^^^^^^^^^^^^^^^^^
    

    regex demo

    变化部分匹配:

    • (?:[^\r\n:]*/)? - 1 或 0 次出现:
      • [^\r\n:]* - 除了:、CR 和 LF 之外的零个或多个字符,然后
      • / - 一个 / 字符
    • ([^:\r\n]*) - 第 1 组:除 :、CR 和 LF 之外的零个或多个字符

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      相关资源
      最近更新 更多