【问题标题】:Regex for everything before last forward or backward slash最后一个正斜杠或反斜杠之前的所有内容的正则表达式
【发布时间】:2010-10-20 20:12:00
【问题描述】:

我需要一个正则表达式,它可以在字符串中查找所有内容,包括最后一个 \ 或 /。

例如,c:\directory\file.txt 应该导致 c:\directory\

【问题讨论】:

    标签: regex


    【解决方案1】:

    试试这个:(Rubular)

    /^(.*[\\\/])/
    

    解释:

    ^ 行首/字符串 ( 开始抓包 .* 贪婪匹配任何字符 [\\\/] 匹配反斜杠或正斜杠 ) 结束捕获组

    由于.* 的贪婪,匹配的斜线将是最后一个。

    如果您的语言支持(或需要)它,您可能希望对正则表达式使用不同于 / 的分隔符,这样您就不必转义正斜杠。

    此外,如果您正在解析文件路径,您可能会发现您的语言已经有一个可以执行此操作的库。这会比使用正则表达式更好。

    【讨论】:

    • +1 for ...您可能会发现您的语言已经有一个库可以执行此操作...
    • 是的。在 R 中,它是 basename()
    【解决方案2】:

    ^(.*[\\\/])[^\\\/]*$

    【讨论】:

      【解决方案3】:

      例如,如果您使用 sed,您可以这样做以输出最后一个斜杠之前的所有内容:

      echo "/home/me/documents/morestuff/before_last/last" | sed s:/[^/]*$::
      

      它会输出:

      /home/me/documents/morestuff/before_last
      

      【讨论】:

        猜你喜欢
        • 2021-11-18
        • 2012-12-29
        • 2017-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多