Python正则表达式查找目录路径(\\\\ Location \\ Location \\ Location)

时间:2018-10-03 13:58:02

标签: python regex python-3.x

我正在尝试在python中编写一个正则表达式以查找目录路径:我的文本如下所示:

text = "The public disk is: \\\\diskA\\FolderB\\SubFolderC\\FileD"

我尝试使用:

import re
my_regex = re.compile(r'\\(.*?)+\\(.*?)')
result = my_regex.search(text)
print(result)

这就是我得到的结果:

<_sre.SRE_Match object; span=(7, 9), match='\\\\'>

所以看起来正则表达式可以识别\\,但不能识别\ ...之前有人遇到过类似情况吗?请帮忙。欢迎任何建议! 谢谢!

1 个答案:

答案 0 :(得分:0)

您的正则表达式搜索字词似乎不符合您的期望。

尝试此正则表达式:

import re    
text = r"The public disk is: \\diskA\FolderB\SubFolderC\FileD"

searchtext = r'\\(\\\w+)*\\'

my_regex = re.compile(searchtext)
result = my_regex.search(text)
print(result.group())

>>> \\diskA\FolderB\SubFolderC\

好,那么这是怎么回事?在在线正则表达式编辑器(例如https://regex101.com/

)上关注allong可能会有所帮助

所以您的文件夹看起来总是结构化的

\\disk\folder\subfolder\sub-subfoler\...etc..\file

因此,我们要查找的结构是一个以\\开头,以\结尾的结构,它们之间是一个或多个使用文字字符的磁盘\目录名。

查询将查找一段以\开头和结尾且之间有零个或多个\ dir语句的文本。因此\\,\\ disk \,\\ disk \ dir \都匹配。

将查询放在一起

\\ # the starting backslash (escaped because backslash is also a special character)
(\\\w+)* # one or more word characters (\w) preceded by an escaped backslash repeated zero or more times
\\ # finally another backslash, escaped

如果要扩展文件路径中的有效字符,请编辑正则表达式的\ w部分。例如,如果您也想将(和)用作有效字符:

searchtext = r'\\(\\[\w()]+)*\\'

请注意,我添加了方括号并添加了更多字符。

方括号基本上是可选字符,它们表示任何这些字符。有些字符不需要转义,而另一些字符需要转义。例如。不需要转义,但是[和]不需要转义。

一个半完整的列表是

searchtext = r'\\(\\[\w()\[\]\{\}:`!@#_\-]+)*\\'