2014-11-03 4 views
2

У меня есть строка, например domainA\userNamePaul. Я пробовал это регулярное выражение (?='\\').*$, но вышло так же, как и вход. Мне нужно получить имя пользователя без домена. Любая идея, что я делаю неправильно.

+0

Почему просто не разбиваться ('\\') '? –

ответ

3

Вы должны использовать Positive lookbehind,

(?<=\\).*$ 

DEMO

Объяснение:

(?<=      look behind to see if there is: 
    \\      '\' 
)      end of look-behind 
.*      any character except \n (0 or more times) 
$      before an optional \n, and the end of the 
         string 
+1

см. Демо, это не так. Вы можете попробовать этот '[^ \\] * $' также http://regex101.com/r/nW5qZ0/4 –

+0

Он работает. Большое спасибо за быстрый ответ. Я ценю это. –

+0

@ GreenCode, предоставленный ответ работает для вашей ситуации. Может быть, проблема с вашей реализацией? –

4

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

string identity = "DOMAIN\\USER"; 
string user = identity.Split('\\').Last(); 

или даже быстрее:

string user = identity.Substring(identity.IndexOf('\\') + 1); 
+0

Это лучшее предложение, чем выше, так или иначе, потому что оно также возвращает полное имя пользователя, если это * не * пользователь Windows, в тех системах, в которых пользователи могут иметь вход в систему с привилегиями домена, но также могут * * не *. :) – neminem

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