2013-10-11 1 views
1

Я ищу помощь с регулярным выражением. У меня есть следующий путь UNC \\server\share1\folder1, который я хотел бы захватить server. Имя сервера всегда будет отличаться, а иногда и IP-адресом.Reqex для соответствия между обратными косыми чертами

У меня есть следующее выражение, с которым я работал, но я не могу заставить его работать так, как я хочу.

\\?.*\\ 

Это возвращает следующий результат: \\server\share\. Может ли кто-нибудь помочь мне просто взять server, а не \\server\?

ответ

2

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

^\\\\.*?\\ 

^ является началом якоря и будет соответствовать только в самом начале.

.*? - это модифицированная версия .*, чтобы она соответствовала соответствию шаблону, следующему за ним; обычно называемый «как можно меньше», в противоположность его «жадному» коллеге.


В качестве альтернативы, вы можете использовать отрицанием класс:

^\\\\[^\\]+\\ 

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


И если вы хотите, чтобы получить server без обратных косых черт, вы должны быть в состоянии использовать захват группу (с помощью круглых скобок) и извлечь совпадающую группу (через $1 или \1):

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

или

^\\\\([^\\]+)\\ 

или, если UNC находит любой первый матч по умолчанию, то вы можете просто использовать [^\\]+.

+1

Благодарим вас за ваши предложения и помощь. Мне удалось получить значение, которое я хотел использовать «[^ \\] +« – Mpit52

+0

@ Mpit52 О, да, это обычно работает в зависимости от функции, которую вы используете, но если способ UNC работать с regex принимает это, классно! :) – Jerry

+1

@Jerry: UNC-путь начинается с * двух обратных косых черт, но мы не видели их, потому что OP не использовал форматирование кода. Это означает, что длинная форма вашего регулярного выражения должна быть ''^\\\\ ([^ \\] +) \\ ''. –

0

Попробуйте делать String.split (или его эквивалент на языке, который вы используете) с «\», а затем получить «сервер» из полученного массива

0

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

(?<=^\\)[^\\]+(?=\\) 

Это будет соответствовать server в \server\share\folder.

 Смежные вопросы

  • Нет связанных вопросов^_^