2014-11-03 2 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

관련 문제