2014-11-03 62 views
2

我有一個字符串,如domainA\userNamePaul。我試過這個正則表達式(?='\\').*$但輸出與輸入相同。我需要獲取沒有域名的用戶名。任何想法我做錯了什麼。

+0

爲什麼不只是'分裂( '\\')'? – 2014-11-03 13:48:33

回答

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 – 2014-11-03 13:49:41

+0

它的工作原理。非常感謝您的及時回覆。我很感激。 – 2014-11-03 13:52:55

+0

@GreenCode,提供的答案適用於您的情況。也許你的實現有問題嗎? – 2014-11-03 13:53:02

4

我相信使用正則表達式是某種矯枉過正這裏。您只需\分割字符串:

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

甚至更​​快:

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

無論如何,這是一個比上述更好的建議,因爲如果用戶的系統中的用戶可以擁有以域爲前綴的登錄名,但也可以*不*,則它還會返回完整的用戶名(如果它不是* Windows用戶)。 :) – neminem 2017-10-04 16:51:13