[regex] 정규식 : 공백 (탭 / 공백)을 찾지 만 개행은 찾지 못함

공백이나 탭을 테스트하지만 줄 바꿈이 아닌 정규식을 어떻게 가질 수 있습니까? 나는 시도 \s했지만 개행을 테스트한다는 것을 알았습니다.

C # / WPF를 사용하지만 중요하지 않습니다.



답변

문자 클래스 사용 : [ \t]


답변

이 문자 세트를 시도하십시오.

[ \t]

이것은 공백 또는 표 작성 기와 만 일치합니다.


답변

@ Eiríkr Útlendi가 언급했듯이 허용되는 솔루션은 가로 탭 (U + 0009)과 분리 공백 (U + 0020)이라는 두 개의 공백 문자 만 고려합니다. 구분하지 않는 공백 (내가 처리하려는 텍스트에 있음)과 같은 다른 공백 문자는 고려하지 않습니다. 더 완전한 공백 문자 목록은 Wikipedia에 포함 되어 있으며 링크 된 Perl 답변 에서도 참조됩니다 . 이러한 다른 문자를 설명하는 간단한 C # 솔루션은 문자 클래스 빼기를 사용하여 빌드 할 수 있습니다.

[\s-[\r\n]]

또는 Eiríkr Útlendi의 솔루션을 포함하면

[\s\u3000-[\r\n]]


답변

참고 : CJK 텍스트 (중국어, 일본어 및 한국어)를 처리하는 경우 지금까지 시도한 구현 (Perl, .NET, PCRE, Python) 에 대해 더블 바이트 공간 (Unicode \u3000)이 포함 되지 않습니다 \s. 먼저 문자열을 정규화해야합니다 (예 : 모두 \u3000를 로 대체 \u0020). 또는 .NET과 같은 다른 공백과 함께이 코드 포인트를 포함하는 문자 세트를 사용해야합니다 [ \t\u3000].

Perl 또는 PCRE를 사용하는 \h경우 가로 공백에 대한 속기 사용 옵션이 있습니다. 여기에는 특히 1 바이트 공간, 2 바이트 공간 및 탭이 포함 된 것으로 보입니다. 자세한 내용은 공백 일치 (Perl) 스레드를 참조하십시오.

그러나이 \h속기는 .NET 및 C #에 대해 구현되지 않았습니다.


답변

코드 아래의 공간 을 바꾸고 싶다면 나를 위해 일했습니다.C#

Regex.Replace(Line,"\\\s","");

탭용

Regex.Replace(Line,"\\\s\\\s","");


답변