【问题标题】:regex removing filename from path正则表达式从路径中删除文件名
【发布时间】:2014-09-11 20:20:10
【问题描述】:

我如何设计一个从路径中删除文件名的 RegEx 脚本?诀窍是,路径有各种各样的扳手可以投入使用。

路径可以包括:

1: "Folder1/Folder2/Folder3.1234/folder4.5678/ApplesandOranges.txt","MoreInfo","EvenMoreInfo"
2: "Folder1/Folder2/Folder3.1234/folder4.91011/","MoreInfo","EvenMoreInfo"

甚至

3: "Folder1/Folder2/Folder3.1234/folder4.5678/ApplesandOranges.zip?CatsAndDogs.txt","MoreInfo","EvenMoreInfo"

在案例 1 和 3 中,我希望得到:

Folder1/Folder2/Folder3.1234/folder4.5678/

不过,第二个返回为

是可以接受的
Folder1/Folder2/Folder3.1234/folder4.5678/ApplesandOranges.zip

虽然不是首选。

在情况 2 中,它会完全跳过该行,因为没有文件名。

有什么建议吗?

通过文本编辑器使用标准 RegEx。没有使用java之类的。

注意:路径只是一个示例。可能有 50 个文件夹。不是一直只有 4 个文件夹

【问题讨论】:

  • s/.*\/(.*)/\1/ 呢?

标签: regex filenames filepath


【解决方案1】:

您可以像这样使用简单的正则表达式:

(.*\/).*

Working demo

如您所见,我们的想法是使用(.*\/) 将所有内容捕获到最后一个斜线并丢弃其余的.*。检查上面的替换部分。

【讨论】:

  • 啊……那行得通,但你让我意识到了另一个难题。更新我的原始帖子以反映。
  • 其实,你知道吗,我可以用你的答案。我将把我的数据文件分成两部分。一个包含除文件路径之外的所有内容,一个仅包含文件路径并使用您的修复程序。谢谢!
  • 费德,遗憾的是,没有。但是,我已经根据您的回答提出了解决方案。我会标记答案的。如果我有代表这样做,我会投票赞成!
【解决方案2】:

你可以用这个。

[^\/]+$

'$' 匹配字符串末尾的位置,而 '[^/]+' 匹配任何没有任何 '/' 的字符串。

【讨论】:

    【解决方案3】:

    这个呢?

    @"^.*[\/]"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      • 2018-08-21
      • 1970-01-01
      • 1970-01-01
      • 2018-12-07
      • 2016-08-03
      • 2019-07-03
      相关资源
      最近更新 更多