检查字符串是否以Python中的驱动器号开头

时间:2014-03-11 14:14:08

标签: python regex string

我正在编写一个脚本,将文件路径列表作为输入。我希望脚本确保输入文件中的字符串是或者至少看起来是有效的完整Windows路径,包括驱动器号。

话虽如此,确保字符串以任何单个字母,大写或小写,冒号和反斜杠开头的最佳方式是什么?

我猜测正则表达式看起来像这样:

[a-zA-Z]:\,但我如何确保它只检查一个字母并且它是字符串中的前3个字符?

我很感激。

4 个答案:

答案 0 :(得分:5)

^字符与字符串的开头匹配。您的角色类目前只匹配一个字母,您需要转义\。所以你的最终正则表达式是:

^[a-zA-Z]:\\

答案 1 :(得分:4)

如果您只是想检查以确保它以驱动器号开头,您还可以使用内置的splitdrive

drive, path = os.path.splitdrive(filename)
if drive == None:
    raise ValueError, 'Filename does not include a drive!'

编辑:感谢jme,如果您不在Windows系统上,请执行import ntpath并替换第一行,如下所示:

drive, path = ntpath.splitdrive(filename)

注意:自Python 2.7.8起,splitdrive也会为UNC路径返回一个“驱动器”。

答案 2 :(得分:1)

根据http://msdn.microsoft.com/en-us/library/aa365247%28v=vs.85%29.aspx的条件检查给定路径是否为有效的Windows路径。我之前做过这件事是因为没有在网上找到一个好的沮丧:

r'^(?:[a-zA-Z]:\\|\\\\?|\\\\\?\\|\\\\\.\\)?(?:(?!(CLOCK\$(\\|$)|(CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9]| )(?:\..*|(\\|$))|.*\.$))(?:(?:(?![><:/"\\\|\?\*])[\x20-\u10FFFF])+\\?))*$'

答案 3 :(得分:0)

所以这就是最终为我工作的。

is_path = re.match("^[a-zA-Z]:\\)*", file)