我正在尝试在 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='\\\\'>
看起来正则表达式可以识别\\,但不能识别\...以前有人遇到过类似的情况吗?请帮忙。欢迎任何建议! 谢谢!!
最佳答案
看起来您的正则表达式搜索词没有执行您想要的操作。
尝试这个正则表达式:
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/
所以看起来你的文件夹都是结构化的
\\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()\[\]\{\}:`!@#_\-]+)*\\'
关于Python正则表达式查找目录路径(\\\\Location\\Location\\Location),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52628720/