2013-11-01 2 views
-3

문자열의 /\의 모든 모양이 Regex를 사용하여 두 번 이상 연속적으로 나타나는 경우이를 제거하고 싶습니다. 즉, 문자열에 abc////////////////////////def이 포함 된 경우 모두 /을 제거하고 싶습니다. 그러나 http://의 "/를 제거해서는 안된다.정규 표현식을 사용하여 연속 된 특수 문자를 제거하는 정규식

누군가가 제안 주 시겠어요?

+0

봐 **. 이것은 아주 기본적인 것들입니다. –

답변

3

당신은 / 문자 3 개 이상의 항목을 일치하는 /{3,}를 사용할 수 있습니다.

var result = Regex.Replace("abc///def", "/{3,}", ""); 

업데이트 : 귀하의 의견에 회신하려면 * 문자는 특별한 의미를 가지고있는 정규 표현식의 메타 문자이므로, 그것을 벗어나야합니다 : \*{3,}. 두 문자를 결합하려면 문자 클래스 [/*]{3,}을 사용할 수 있습니다. 문자 클래스는 대괄호로 표시됩니다. 캐릭터 클래스 안에서는 메타 문자를 벗어날 필요가 없습니다. 그래서 이전에했던 것처럼 내게 *을 이스케이프 처리하지 않고 나열합니다.

+0

"/"에서 작동했습니다. 캐릭터 "*"에 어떻게 적용 할 수 있습니까? 나는 "*"에 대해 같은 것을 시도 할 때 오류가 발생합니다. 나는이 정규 표현식에 익숙하지 않다. 그러므로이 기본적인 질문들. – Thomas

+0

@ 토마스 귀하의 질문에 대한 답변에 대한 답변을 업데이트했습니다. –

0

사용 negative look-behind assertion : 예를 들어

@"(?<!https?:)/{2,}|\\{2,}" 

: **는 수량에

Regex pattern = new Regex(@"(?<!https?:)/{2,}|\\{2,}"); 
Console.WriteLine(pattern.Replace(@"http://example.com", "")); 
Console.WriteLine(pattern.Replace(@"abc//////////def", "")); 
Console.WriteLine(pattern.Replace(@"abc\\\\\\\\\\def", "")); 

인쇄

http://example.com 
abcdef 
abcdef 
관련 문제