답변:
문자 클래스 사용 : [ \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 #에 대해 구현되지 않았습니다.
\h
(Java 8에 도입 됨)는을 포함 \u3000
하지만 \s
UNICODE_CHARACTER_CLASS 모드 (Java 7에 도입 됨)를 설정하지 않는 한 포함 하지 않습니다.
\h
. 그러나 여기에 목록에 추가해야하는 경우 다른 많은 공백 문자가 있음을 보여줍니다.