C# Regex: 인라인 구분 기호 피하기
문제:
C#에서 정규식을 사용할 때 흔히 발생하는 함정은 인라인 구분 기호를 잘못 적용하는 것입니다. 이로 인해 문자열 교체를 시도할 때 예상치 못한 동작이 발생하는 경우가 많습니다. 예를 들어 "/", "-" 및 "."을 제거하도록 설계된 정규식입니다. 문자열에서 실패할 수 있습니다.
예:
다음 코드는 "/", "-" 및 "."를 바꾸려고 시도합니다. 빈 문자열을 사용하면 올바르게 작동하지 않습니다.
<code class="language-csharp">string name = "dr-det-fb.ydp.eu/ebook/trunk/annotations/ctrl.php/api1751-4060-1193-0487"; name = Regex.Replace(name, @"/\W/g", ""); // Incorrect usage of delimiters</code>
해결책:
C#은 정규식 구문이 PHP, Perl, JavaScript와 같은 언어와 다릅니다. 인라인 구분 기호(위 예의 /
등)는 지원되지 않습니다. 올바른 접근 방식은 이를 생략하는 것입니다.
<code class="language-csharp">string name = "dr-det-fb.ydp.eu/ebook/trunk/annotations/ctrl.php/api1751-4060-1193-0487"; name = Regex.Replace(name, @"\W", ""); // Correct syntax</code>
"/", "-" 및 "."를 구체적으로 타겟팅하려면 문자 클래스를 사용하세요.
<code class="language-csharp">name = Regex.Replace(name, @"[/\-\.]", ""); // Correctly targets specific characters</code>
설명:
정규식 문자열 앞의 @
기호는 축어적 문자열 리터럴을 나타내므로 C#이 백슬래시를 특별히 해석하지 못하게 됩니다. W
은 영숫자가 아닌 모든 문자와 일치하여 "/", "-", "." 및 기타 유사한 기호를 효과적으로 제거합니다. 향상된 예제에서는 문자 클래스 [/-.]
를 사용하여 제거할 문자를 명시적으로 정의합니다. g
플래그(전역 대체)는 C#의 Regex.Replace
에 의해 암시적으로 처리됩니다. 따라서 C# Regex.Replace
메서드
위 내용은 C# Regex.Replace()에서 인라인 정규식 구분 기호가 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!