3

我想以以下形式提取路径:

$/Server/一级文件夹/Second_Level_Folder/我的文件.extension

这里的挑战是路径嵌入在“自由格式”电子邮件中,如下所示:

你好,

 You can download the file here:
  • $/Server/First Level Folder/Second_Level_Folder/My File.extension <- 点击我!

给定一个字符串,我想使用 RegEx 从中提取所有路径。这甚至可能吗?

谢谢!

4

2 回答 2

10

是的,这是可能的,(\$/.*?\.\S*)应该可以很好地完成这项工作。

\$/匹配路径的开始

.*?匹配所有内容,直到正则表达式的下一部分

\.\S*匹配点和除空格以外的任何内容(空格、制表符)

它的( )周围使它捕捉到所有匹配的东西。

编辑:

供进一步使用

只是路径

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

只是文件名

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

于 2013-05-15T10:54:18.567 回答
3

如果文件名包含[转义的正斜杠/或没有句点符号]并且文件路径空格用反斜杠“\”转义,你仍然可以这样做(我已经转义了正斜杠和反斜杠)

(\/.*?\/)((?:[^\/]|\\\/)+?)(?:(?<!\\)\s|$)

正则表达式可视化

调试演示

这将创建两个捕获组 - 一个用于路径,一个用于文件基名。如果您的测试字符串包含带有未转义空格的文件名(如图所示),那么您必须按照 B8vrede 的回答使用文件名中的句点作为锚点。

于 2015-03-12T09:23:55.387 回答