ProgramingTip

정규식을 사용하여 후행 공백을 제거합니까?

bestdevel 2020. 12. 10. 20:56
반응형

정규식을 사용하여 후행 공백을 제거합니까?


빈 줄을 제거하지 않고 코드에서 후행 공백과 탭을 제거하고 싶습니다.

나는 시도했다 :

\s+$

과 :

([^\n]*)\s+\r\n

그러나 모두가 빈 줄을 제거했습니다. \s줄 끝 문자도 일치 생각 합니다.


업데이트 (2016) :

요즘에는 사용자 지정 / 사용자 설정과 함께 Sublime의 TrailingSpaces 패키지 를 사용하여 코드 정리를 자동화 합니다.

"trailing_spaces_trim_on_save": true

후행 공백을 강조 표시하고 표시 할 때 자동으로 잘라 내기.


후행 공백과 탭을 제거해.

[ \t]+$

전용 줄을 공백 유지하면서 후행 공백을 제거하려면 정규식이 공백 아닌 문자 뒤의 후행 공백 만 제거하도록합니다 . 따라서 먼저 공백이 아닌 문자를 확인해야합니다. 즉, 공백이 아닌 문자가 일치 항목에 포함되어야 대체 항목에 포함되어야합니다.

정규식 : ([^ \t\r\n])[ \t]+$

대체 : \1 또는 $1, IDE에 따라 다름


플랫폼은 지정되지 않은 C # ( .NET )에서는 다음과 같습니다.

정규식 (텍스트 줄 옵션을 가정 합니다. 아래 예에서는 사용합니다) :

    [ \t]+(\r?$)

교체 :

    $1

"\ r? $"에 대한 설명은 정규식 옵션, 다중 행 모드 (MSDN)를 참조하십시오 .

코드 예

이렇게하면 모든 줄에서 모든 후행 공백과 모든 후행 TAB이 제거됩니다.

string inputText = "     Hello, World!  \r\n" +
                   "  Some other line\r\n" +
                   "     The last line  ";
string cleanedUpText = Regex.Replace(inputText,
                                     @"[ \t]+(\r?$)", @"$1",
                                     RegexOptions.Multiline);


후행 및 선행 공백을 찾는 정규식 :

^[ \t]+|[ \t]+$

Visual Studio 2012 이상 ( .NET 정규식 사용 )을 사용하는 경우 다음 정규식을 사용하여 빈 줄을 제거하지 않고 후행 공백을 제거 할 수 있습니다.

바꾸다 (?([^\r\n])\s)+(\r?\n)

$1

여기에 이미지 설명 입력


일부 설명

다소 복잡한 필요가 필요한 이유는 문자 클래스 \s가 공백, 탭 및 개행 문자 \s+와 일치하는 공백 만 포함하는 행 그룹과 일치하기 때문입니다. $이 정규식 종료를 추가하는 데 도움이되지 않습니다 . 공백과 줄 바꿈 문자 만 포함하는 줄 그룹과 여전히 일치하기 때문입니다.

또한 (?([^\r\n])\s)표현의 의미를 정확히 알고 싶을 수도 있습니다 . 이것은 캐리지 리턴 이나 줄 바꿈이 아닌 경우 공백 문자 클래스와 일치하는 것을 의미합니다.

대체 구조는 일반적으로 참과 거짓 부분을 가지고 있습니다.

(?( expression ) yes | no )

그러나 그것이 사실이라고 말하지 않습니다.


빈 줄을 무시하면서 후행 공백을 제거 긍정적 인 뒤를 사용합니다.

(?<=\S)\s+$

Look-behind는 일치에서 공백이 아닌 (\ S)를 제외하는 방법입니다.


[ |\t]+$빈 교체로 작동합니다. \s+($)A는 함께 $1교체도 작동합니다. Visual Studio Code에서는 ...


공백 후행 공백을 제거하십시오.

\n|^\s+\n

AtomXcode 편집기 에서 테스트했습니다 .


자바 :



String str = "    hello world  ";

// prints "hello world" 
System.out.println(str.replaceAll("^(\\s+)|(\\s+)$", ""));



다음과 같이 사용할 수 있습니다.

var regex = /( )/g;

샘플 : 여기를 클릭하십시오

참고 URL : https://stackoverflow.com/questions/9532340/how-do-i-remove-trailing-whitespace-using-a-regular-expression

반응형