2013-07-20 6 views
0

Моя программа читается в строковом списке, который содержит имена файлов и папок, расположенные на сетевом диске.Какое регулярное выражение вернет только имя сетевого диска?

Вот некоторые примеры того, что мой список может содержать:

\\NETWORKDRIVE\text1.txt 
\\NETWORKDRIVE\\text2.txt 
\\NETWORKDRIVE\foldername\text3.txt 
\\NETWORKDRIVE\\ 
\\NETWORKDRIVE\ 
\\NETWORKDRIVE 

мне нужно регулярное выражение, чтобы вернуть имя сетевого диска только (в том числе ведущих «\» символы).

Я пробовал различные регулярные выражения, и я нашел тот, который почти работает. Вот то, что у меня есть:

^(\\+)(.*?)(\\+) 

Есть две проблемы с этим регулярным выражением.

Первой проблемой является то, что он соответствует имени сетевого диска и символов «\». Вторая проблема заключается в том, что если имя сетевого диска не заканчивается никакими символами «\», оно соответствует только ведущим символам «\».

Вот мои результаты, чтобы продемонстрировать:

\\NETWORKDRIVE\text1.txt => \\NETWORKDRIVE\ 
\\NETWORKDRIVE\\test2.txt => \\NETWORKDRIVE\\ 
\\NETWORKDRIVE\foldername\text3.txt => \\NETWORKDRIVE\ 
\\NETWORKDRIVE\\ => \\NETWORKDRIVE\\ 
\\NETWORKDRIVE\ => \\NETWORKDRIVE\ 
\\NETWORKDRIVE => \\ 

Как вы можете видеть, я не получаю результаты, которые я хочу. Я просто хочу, чтобы результат был:

\\NETWORKDRIVE 

для всех случаев.

Может ли кто-нибудь помочь мне изменить и/или изменить свое регулярное выражение, чтобы делать то, что мне нужно?

спасибо.

+0

Какой язык вы используете? –

+0

Ну, моя программа - C#, и я использую Regex.Match (fileName, pattern), но я делаю свое тестирование с использованием веб-сайта проверки регулярных выражений (http://regexpal.com). –

+0

Тестер регулярных выражений .net можно найти здесь: http://regexstorm.net/tester –

ответ

1

Вы можете использовать это:

^\\{2}[^\\]+ 

[^\\] означает, что все символы, кроме символа обратной косой черты

+0

Я использую онлайн-тестер регулярных выражений (http://regexpal.com), и когда я использую ваше регулярное выражение, результаты одинаковы * кроме * он работает в последнем случае, когда имя папки \\ NETWORKDRIVE возвращает \\ NETWORKDRIVE. –

+0

@JanTacci: Извините, я не прочитал все ваше сообщение, повторите попытку. –

+0

А, это работает! Не возражаете ли вы объяснить, что делает {2}? Благодаря! –