2014-09-10 5 views
1

매우 큰 숫자 (길이가 다를 수 있음)를 입력으로 사용합니다.정규식 : 숫자 중간에있는 자릿수를 특수 문자로 바꿉니다.

그리고 처음 세 자리와 마지막 세 자리를 그대로두고 그 사이에있는 모든 자리를 일부 문자로 바꿀 정규 표현식이 필요합니다. 출력의 전체 길이는 동일하게 유지되어야합니다. 예를 들어

:

입력 123,456,789,123,456

출력 123xxxxxxxxx456

까지 제가

^(\d{3})(.*)(\d{3}) 

번째 그룹을 사용하여 3 군에 입력 된 숫자를 나눌 수 있었다 교체 할 필요가있는 것이므로

와 같습니다.
$1 {Here goes the replacement of the 2 group} $3 
내가 교체 고민하고

:

Regex r = new Regex("^(\d{3})(.*)(\d{3})"); 
r.Replace(input,"$1 {Here goes the replacement of the 2 group} $3") 

어떻게 내가 여기에 두 그룹에 대한 교체를 작성해야?

미리 감사드립니다. 당신은 lookbehind 및 내다을 사용하는 다음 정규식을 시도 할 수

+1

당신이 올바른지, 어떤이있다 너가 아는 문제. 싱? – aelor

+0

당신은 그것을 텍스트로 쓰면 :'$ 1helloworld $ 3' – aelor

+0

사실 3 개의 매치 그룹이 필요 없다. 간단히'$ 1'과'$ 2'을 사용할 수있다. – aelor

답변

4

,

string str = "123456789123456"; 
string result = Regex.Replace(str, @"(?<=\d{3})\d(?=\d{3})", "x"); 
Console.WriteLine(result); 
Console.ReadLine(); 

출력 :

123xxxxxxxxx456 

IDEONE

DEMO

+0

실제로 이것은 게시 한 것보다 훨씬 좋습니다. 나는 바보예요. – decPL

+0

고마워요, 매력처럼 작동합니다. –

관련 문제