2 개 이상의 공백과 일치하지만 새 줄은 일치하지 않는 정규식


87

문자열에서 두 개 이상의 공백을 모두 바꾸고 싶지만 새 줄은 아닙니다.이 정규식이 있습니다. \s{2,}하지만 새 줄도 일치합니다.

새 줄이 아닌 2 개 이상의 공백 만 일치시킬 수 있습니까?

C #을 사용하고 있습니다.


@nihcap-실제로 C #에는 자체 정규식 버전이 없으며 .Net 공용 라이브러리의 일부입니다. 이 경우 .Net과 C #은 모두 유용한 태그입니다.
Kobi 2011

답변:


159

문자 클래스 안에 일치시키려는 공백 문자를 넣으십시오. 예를 들면 :

[ \t]{2,}

2 개 이상의 공백 또는 탭과 일치합니다.

다음을 수행 할 수도 있습니다.

[^\S\r\n]{2,}

어떤 제외한 모든 공백 문자와 일치 \r하고 \n(수도 있습니다 배 이상에서 S의이 \S짧은이다 [^\s]).


마지막 문장에서 "줄임말"이란 무엇을 의미합니까? 이 속기없이 전체 정규 표현식은 어떻게 보일까요?
Lonnie Best

5
@LonnieBest 정규식에서 \ w와 같은 이스케이프 시퀀스의 경우 대문자 이스케이프 시퀀스가 ​​소문자 이스케이프 시퀀스의 역 문자 집합이라는 것이 종종 관례입니다. 예를 들어 \ d는 \ D의 역, \ s는 \ S의 역, \ w는 \ W의 역 등입니다. 또한 [abc]와 같이 []로 구분 된 문자 클래스 집합 내에서 다음을 지정할 수 있습니다. [^ abc]를 사용하여 반전합니다. 따라서 \ S는 [^ \ s]와 동일하며 허용 된 경우 허용되지 않는 표기법 [^^ \ S] 과도 동일합니다. (역의 역수를 표현하는 유효한 방법 ^^ 아니다.)
Dejay 클레이튼

@DejayClayton 감사합니다, 나는 그것을 몰랐습니다.
로니 최고의

이 답변은 효과가 있었지만 왜 줄 \s{2,}바꿈을 진행합니까? 그것이 경우 \n\s{2,}이해 것입니다. 그리고 괄호 안에 리터럴 공백을 입력하는 것이 작동하는 이유는 무엇입니까?
비트 없음

"이 대답은 효과가 있었지만 왜 \ s {2,}는 그것을 진행하는 줄 바꿈을 잡습니까?" \s공백, 탭 및 줄 바꿈과 일치 하기 때문 입니다. "그리고 왜 괄호 안에 리터럴 공백을 입력하는 것이 작동합니까?", 그렇습니다. 그것에 대해 뭐라고 말할지 모르겠어요 :)
Bart Kiers

0

두 개의 공백 만 대상으로하는 정규식 : [] {2,} 정규식의 대괄호는 문자 클래스입니다. 거기에 문자 만 의미합니다. 여기 그냥 공간. 다음 중괄호는 두 번 이상을 의미합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.