我想以以下形式提取路径:
$ / Server / First Level Folder / Second_Level_Folder / My File.extension
这里的挑战是路径嵌入在“自由格式”电子邮件中,如下所示:
您好,
You can download the file here:
- $ / Server / First Level Folder / Second_Level_Folder / My File.extension< - Click me!
给定一个字符串,我想使用RegEx从中提取所有路径。这甚至可能吗?
谢谢!
答案 0 :(得分:6)
是的,(\$/.*?\.\S*)
可以完成这项工作。
\$/
匹配路径的开头
.*?
匹配所有内容,直到正则表达式的下一部分
\.\S*
匹配点和除空格(空格,制表符)之外的任何内容
围绕它的(
)
会捕获所有匹配的内容。
修改强>
供进一步使用
只是路径
(\$/.*?/)[^/]*?\.\S*
只是文件名
\$/.*?/([^/]*?\.\S*)
答案 1 :(得分:1)
如果文件名包含[转义正斜杠/或没有句点符号]并且文件路径空格使用反斜杠'\'进行转义,您仍然可以使用此方法(我已经转义了正斜杠和反斜杠)
(\/.*?\/)((?:[^\/]|\\\/)+?)(?:(?<!\\)\s|$)
这将创建两个捕获组 - 一个用于路径,另一个用于文件basename。如果您的测试字符串包含带有未转义空格的文件名(如图所示),那么您必须根据B8vrede的答案使用文件名中的句点作为锚点。