2013-08-22 2 views
0

안녕하세요. 나는 가능한 한 많이 내 응용 프로그램에 정규식을 구현하려는 모든 시도를 한 VB.Net 프로그래머입니다. 연습은 완벽하기 때문에 Net 메서드를 통해 정규식을 선택합니다. 이것은 나의 정규 지식 지식만을위한 것입니다.Regex.Char 위치에서 다른 문자 위치로 바꾸기

예를 들어 따옴표를 무시한 다음과 같은 문자열을 사용하십시오. ": 1Af404080A83hfndsgt4u47", 내가보고있는 문자열 부분은이 8 개의 값입니다. "04080A83"이것은 변경 될 수 있습니다. 값은 중요하지 않지만 위치는 중요합니다. 0부터 시작하여 첫 번째 문자 위치는 5에서 12가 될 것입니다. {5}까지 모든 문자를 일치시킬 수 있지만 범위를 바꿀 수는 있습니다. 예제 {5,12}. 최종 출력은 "": 1Af4Hello123hfndsgt4u47 ""Hello123

감사합니다. 나는 내 자신의 베니 타 (Benita)를 위해 말한 것처럼 불가능할 수도있다.

+0

이 시도의 일부를 게시하려고 .. 네가 가까웠다는 것을 결코 알지 못한다. – Novocaine

+1

정규식을 사용하는 것보다 훨씬 더 간단한 방법이 있다는 것을 이해하시기 바랍니다. –

답변

1

당신은 당신이 처음 다섯 개 문자 (?<=^.{5})를 건너 뛸 수 있는지 확인하기 위해 lookbehind을 사용할 수 있으며, 당신은 단순히 당신이 원하는대로 바꿀 수있는 .{8} 8 개 문자를 일치시킬 수 있습니다.

result = Regex.Replace(input, "(?<=^.{5}).{8}", "Hello123") 

Working demo.

+0

정말 고마워요. 내가 긍정적 인 lookbehind 맞아? 절대 의미를 이해하지 못한다. –

+0

@ user2509066 예.대답의 링크에서 읽었을 때 문제를 아주 잘 설명합니다. 이 방법으로 문제가 해결되면 옆에있는 체크 표시를 선택하여 답을 수락하십시오. 이것은 귀하의 문제가 해결 된 (그리고 어떻게) 미래 방문자를 보여줄 것이며, 나에게 약간의 신용 (그리고 당신에게도 약간)을 줄 것입니다. –

+0

물론 그럴 것입니다. 당신은 모두 매우 도움이되었습니다. –

1

string의 범위를 바꾸려면 정규식이 필요합니까? 문자열 메서드는보다 효율적이고 종종 더 읽기 쉽습니다.

string input = ":1Af404080A83hfndsgt4u47"; 
string replace = "Hello123"; 
int start = 5; 
string result = ""; 
if (input.Length >= start) 
{ 
    result = input.Substring(0, start) + replace + input.Substring(start + replace.Length); 
    Console.Write(result); 
} 

Demo

VB.NET :

Dim input As String = ":1Af404080A83hfndsgt4u47" 
Dim replace As String = "Hello123" 
Dim start As Integer = 5 
Dim result As String = "" 
If input.Length >= start Then 
    result = input.Substring(0, start) & replace & input.Substring(start + replace.Length) 
    Console.Write(result) 
End If 
+0

글쎄, 그는 정규식을 배우기 위해 정규식을 사용한다고 말했다. 이것은 생산 코드가 될 것 같지 않습니다. –

+0

@ m.buettner : 나는 그것을 간과했다. –

+0

Visual Basic에서 10 년 이상 프로그래밍되어 있습니다. 하위 문자열로이 작업을 수행하는 방법을 알고 있습니다. 내가 원래의 게시물에 내가 말했듯이 나는 정규식을 사용할 때도 아무 의미가 없어도 할 수있다. 내 개인 학습에 관한 것입니다. 그러나 어쨌든 고마워요. –

0

나는 우리가 {5까지 모든 문자를 일치시킬 수 있습니다 알고 당신이

무슨 뜻인지 정확히 모르겠습니다 }하지만 범위를 바꿀 수 있습니다. 예제 {5,12}.

하지만이 정규식으로 충분합니다.

(?<=^(\w{4}))\w{8} 
+0

'^'는 lookbehind 안에 들어가야합니다. 그렇지 않으면 이것은 실패 할 것입니다 (문자열 시작 부분의 왼쪽에 4 개의 문자가 필요함). –

+0

고맙습니다. – hschne

관련 문제