Регулярное выражение для соответствия любому пути к папке любой длины на Windows и Unix - PullRequest
0 голосов
/ 17 февраля 2020

Можно ли создать регулярное выражение, которое будет соответствовать любому пути к папке любой длины в Windows и Unix? Так, например, регулярное выражение должно соответствовать: C:Users/Hp Workstation, а также: C:Users/User1/Downloads и C:Users/Desktop/Python/python-2.7.7-docs, и даже гораздо более длинные пути ... Это был только пример. Я имел в виду какое-то универсальное регулярное выражение для соответствия абсолютно любому пути (любой раздел, любая папка, любая подпапка ...) Я хотел бы сделать это в Python. Заранее спасибо!

ОДИН ИЗ ОТВЕТОВ: Это одно из возможных решений, к которым я пришел, которое работает для подавляющего большинства различных путей в большинстве языков программирования.

^([a-zA-Z]?\:?[^\/\\:*?"<>|]*|[\/\\]{1,2}[^\/\\:*?"<>|]+[\/\\][^\/\\:*?"<>|]+)([\/\\][^\/\\:*?"<>|]+)+

1 Ответ

1 голос
/ 17 февраля 2020

Вы можете попробовать это, это соответствует как локальным, так и сетевым путям.

^(C:[\S\s]+|\\[\S\s]+) или ^(C:.*|\\.*)

пример

a = 'C:Users/Hp Workstation'
b = 'C:Users/User1/Downloads'
c = 'Users/Desktop/Python/python-2.7.7-docs'
d = '\\lol.com\Dfsdd\Dfsrerere\ytererwe\9jungnjfl\Projects'
e = 'lol.com\Dfsdd\Dfsrerere\ytererwe\9jungnjfl\Projects'
lis=[a,b,c,d,e]
for item in lis:
    print(re.findall(r'^(C:[\S\s]+|\\[\S\s]+)', item ))

выход

['C:Users/Hp Workstation']
['C:Users/User1/Downloads']
[]
['\\lol.com\\Dfsdd\\Dfsrerere\\ytererwe\\9jungnjfl\\Projects']
[]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...