문자열의 /
및 \
의 모든 모양이 Regex를 사용하여 두 번 이상 연속적으로 나타나는 경우이를 제거하고 싶습니다. 즉, 문자열에 abc////////////////////////def
이 포함 된 경우 모두 /
을 제거하고 싶습니다. 그러나 http://
의 "/
를 제거해서는 안된다.정규 표현식을 사용하여 연속 된 특수 문자를 제거하는 정규식
누군가가 제안 주 시겠어요?
이문자열의 /
및 \
의 모든 모양이 Regex를 사용하여 두 번 이상 연속적으로 나타나는 경우이를 제거하고 싶습니다. 즉, 문자열에 abc////////////////////////def
이 포함 된 경우 모두 /
을 제거하고 싶습니다. 그러나 http://
의 "/
를 제거해서는 안된다.정규 표현식을 사용하여 연속 된 특수 문자를 제거하는 정규식
누군가가 제안 주 시겠어요?
이당신은 /
문자 3 개 이상의 항목을 일치하는 /{3,}
를 사용할 수 있습니다.
var result = Regex.Replace("abc///def", "/{3,}", "");
업데이트 : 귀하의 의견에 회신하려면 *
문자는 특별한 의미를 가지고있는 정규 표현식의 메타 문자이므로, 그것을 벗어나야합니다 : \*{3,}
. 두 문자를 결합하려면 문자 클래스 [/*]{3,}
을 사용할 수 있습니다. 문자 클래스는 대괄호로 표시됩니다. 캐릭터 클래스 안에서는 메타 문자를 벗어날 필요가 없습니다. 그래서 이전에했던 것처럼 내게 *
을 이스케이프 처리하지 않고 나열합니다.
"/"에서 작동했습니다. 캐릭터 "*"에 어떻게 적용 할 수 있습니까? 나는 "*"에 대해 같은 것을 시도 할 때 오류가 발생합니다. 나는이 정규 표현식에 익숙하지 않다. 그러므로이 기본적인 질문들. – Thomas
@ 토마스 귀하의 질문에 대한 답변에 대한 답변을 업데이트했습니다. –
사용 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
봐 **. 이것은 아주 기본적인 것들입니다. –