#regex #vb.net #regex-negation
Вопрос:
Привет, стэковер, цветы,
я не мог найти решение самостоятельно и не мог найти соответствующий ответ, поэтому я обращаюсь к вам за помощью 🙂
Я работаю в VB.Net 4.x среда, в которой мне обычно приходится соединять пути в стиле Windows из различных источников, которые очень ненадежны по своему формату (начальные косые черты, конечные косые черты, иногда двойные косые черты внутри), поэтому я не могу использовать Path.Join
Мое следующее лучшее предположение-регулярное выражение заменить любое двойное появление обратной косой черты одним: \
что слишком наивно, так как оно также преобразует адрес сервера, который начинается с двойной обратной косой черты в начале.
псевдокод
"\server123\a\b\c\".replace(/\ /g, "") -> "server123abc"
вот в чем проблема. я хочу исключить любые ведущие обратные косые черты из сопоставления. Поэтому я, хотя и отрицательно смотрю на это:
регулярное выражение
(?!^\ )\
что сработало бы в моем примере. Но это не то, что я хочу, чтобы он делал. Он совпадает со второй косой чертой и заменяет ее.
Что не так с моим вторым регулярным выражением? как мне негативно взглянуть на что-то с самого начала?
Спасибо за любое объяснение и решение
Комментарии:
1. Взгляните на Путь. Метод GetFullPath . Это может помочь решить некоторые из ваших проблем.
Ответ №1:
Вы можете использовать
Regex.Replace(text, "(?<!^\*)\ ", "")
Смотрите <a rel=»noreferrer noopener nofollow» href=»https:///regexstorm.net/tester?p=(?демонстрацию регулярных выражений .NET и VB.NET онлайн-демонстрация.
Подробные сведения:
(?<!^\*)
— отрицательный внешний вид, который не соответствует совпадению, если сразу слева от текущего местоположения есть нулевая или более обратных косых черт от начала строки\
— одна или несколько обратных косых черт.