Во-первых, я потратил три часа, пытаясь решить эту проблему. Также, пожалуйста, не предлагайте не использовать регулярное выражение. Я ценю другие комментарии и могу легко использовать другие методы, но я практикую регулярное выражение как можно больше.Разбор каталогов из строки
Я использую VB.Net
Пример строки:
"Hello world this is a string C:\Example\Test E:\AnotherExample"
Выкройка:
"[A-Z]{1}:.+?[^ ]*"
работает отлично. Как бы то ни было, если имя каталога содержит пробел? Я попытался сопоставить все строки, которые начинаются с 1 заглавной буквы, за которой следует двоеточие, а затем что-то еще. Это нужно согласовать до пробела, 1 верхнюю букву и двоеточие. Но затем повторите ту же последовательность.
Надеюсь, у меня есть смысл.
Должен ли он справиться с чем-то вроде: «Это строка C: \ program files \ test D: \ test, а это еще одна строка»? Потому что любые строки в конце были бы - насколько я могу судить, невозможно определить из каталога с пробелами. – Gray
Вы спрашиваете невозможное. Предполагая, что эти пути относятся к локальной файловой системе, вам нужно будет последовательно тестировать более длинные кандидаты, чтобы убедиться, что они являются каталогами ... иначе нет возможности разрешить неоднозначность последовательных слов, которые являются или не являются частью пути. – spender