【问题标题】:Regular expression selection of last two folder path names最后两个文件夹路径名的正则表达式选择
【发布时间】:2016-09-13 01:16:20
【问题描述】:

我正在使用 perl,但在删除其他文件夹名称以保留最后两个文件夹名称时遇到了一些问题。

Trainings and Events
General Office\Archive
General Office\Office Opperations\Contacts
General Office\Office Opperations\Office Procedures\How Tos
public_html\Accordion\.svn\tmp\text-base

我想删除文件夹路径名,这样文件夹最终会像这样,每个文件夹都有最后两个路径名:

Trainings and Events
General Office\Archive
Office Opperations\Contacts
Office Procedures\How Tos
tmp\text-base
Office Opperations\Contacts

我已经阅读了其他一些显示最后两个文件夹名称的stackoverflow,但我无法反转表达式。 (如果能找到我会链接)

我目前正在使用 sublime text 3 来测试我的表达方式。

谢谢

【问题讨论】:

    标签: regex perl directory sublimetext3 filepath


    【解决方案1】:

    你想要的图案是

    s/.+\/(.+\/.+)$/$1/g
    

    它将抓取文件夹名称的最后一位并用它替换整个字符串。

    【讨论】:

      【解决方案2】:
      (?:[^\\]*\\|^)[^\\]*$
      

      您实际上想要“最多两个”,因为否则您不会赶上“培训和活动”。为了解决这个问题,我分别匹配这两种情况:

      • 可以是文件夹名称(任意数量的非反斜杠),后跟斜杠,或字符串开头
      • 另一个文件夹名称
      • 字符串结束

      【讨论】:

      • 那我是不是应该使用 grep 将选择放入一个数组中?
      • 您要求“选择最后两个文件夹路径名的正则表达式”。这就是答案的作用。我不知道你应该用它做什么。如果您想要数组中的结果,那么这应该是问题所在,不是吗?您也没有指定您的数据是在文件中还是在字符串中或在数组中。由于您的标签,我只能假设您想要在 Perl 中使用它。这些事情肯定会影响答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      • 2018-12-07
      • 2013-12-09
      • 1970-01-01
      相关资源
      最近更新 更多