1

我有以下输入列表,我想从中提取目录路径并忽略文件路径。下面是一个用 ; 分隔的输入列表示例。

MI4/Search/Service/src/main/resources/META-INF/persistence.xml;MI4/Search/Service/src/main/resources/META-INF;MI4/FRSearch/Service/src/main/resources/resource/spring.xml;MI4/Search/Service/src/main/resources/conf;

正则表达式应该匹配

MI4/Search/Service/src/main/resources/META-INF;
MI4/Search/Service/src/main/resources/conf;
4

1 回答 1

0

首先,目录可以用扩展名命名,因此检查路径中是否存在扩展名并不是确定某物是否真的是文件或目录的可靠方法。事实上,您可以确定路径是目录名还是文件名的唯一方法是使用适当的操作系统 API,例如GetFileAttributes在 Windows 或statLinux 上。

如果这是您的要求,那么您应该在分号上拆分并遍历产生的每个路径,依次将每个路径输入适当的 API 以确定它是文件还是目录。如果您只需要文本匹配,我仍然建议您拆分分号,然后将每个单独的路径与适当的正则表达式匹配。

提取扩展的 Ruby 函数可能如下所示:

def get_extension(path)
  path =~ /[^\/](\.[^.\/]*)$/
  $1
end

请注意,您需要处理一些问题。例如,此正则表达式会将路径foo/bar/.hidden视为没有扩展名的路径。这可能不是您需要的行为。您需要适当地调整表达式。

然后,您将获得get_extension返回的所有路径nil。请让我们知道您尝试使用哪种语言进行此操作,因为存在显着的句法差异。

于 2013-08-05T16:09:45.127 回答