[regex] 정규식을 사용하여 줄이 비어 있는지 확인하는 방법

줄이 비어 있는지 여부를 확인하는 간단한 정규식을 만들려고합니다.

케이스;

"    some"   // not blank
"   " //blank
"" // blank



답변

원하는 패턴은 여러 줄 모드에서 다음과 같습니다.

^\s*$

설명:

  • ^ 문자열 앵커의 시작입니다.
  • $ 문자열 앵커의 끝입니다.
  • \s 공백 문자 클래스입니다.
  • * 0 이상의 반복입니다.

여러 줄 모드 에서 줄의 시작과 끝 ^$도 일치합니다.

참고 문헌 :


비정규 대안 :

주어진 문자열 line이 “공백”인지 (즉 trim(), 공백 만 포함) 확인한 다음 결과 문자열을 확인하여 확인할 수도 isEmpty()있습니다.

Java에서는 다음과 같습니다.

if (line.trim().isEmpty()) {
    // line is "blank"
}

정규식 솔루션은 matches다음과 같이 앵커없이 단순화 할 수 있습니다 ( Java로 정의 된 방식 때문에 ).

if (line.matches("\\s*")) {
    // line is "blank"
}

API 참조


답변

실제로 여러 줄 모드에서 더 정확한 대답은 다음과 같습니다.

/((\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm

수락 된 답변 : ^\s*$마지막 줄이 비어있는 경우 (여러 줄 모드에서) 시나리오와 일치하지 않습니다.


답변

이 시도:

^\s*$


답변

가장 휴대용 정규식 될 것이다 ^[ \t\n]*$(당신이 교체해야합니다 빈 문자열과 일치하도록 \t하고 \n그에 따라 탭과 줄 바꿈 포함) 및 [^ \n\t]공백이 아닌 문자열을 일치합니다.


답변

답변에 대한 bchr02의 전체 크레딧 . 그러나 빈 줄 이있는 (주석 끝) 행에 대한 시나리오를 잡기 위해 약간 수정해야했습니다 . 정규식이 비어 있지 않은 줄과와 일치했습니다 .*/*/

새로운: (^(\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm

내가 한 것은 ^줄의 시작을 나타내는 두 번째 문자로 추가 하는 것입니다.


답변

여기서 공백은 의미하는 바를 의미합니다.
한 줄에 공백이 있거나 한 줄에 아무것도 없습니다.
아무것도 포함하지 않는 행을 일치 시키려면 ‘/ ^ $ /’를 사용하십시오.


답변

글쎄 … 내가 고민했다. (padpadd ++ 사용) 이것이 내가 찾은 해결책이다.

\ n \ s

줄 끝의 경우 \ n (일치하는 시작)-행의 시작 부분이 문자열이므로 캐럿은 도움이되지 않습니다. \ s 다음 문자열까지 공간을 차지합니다.

그것이 도움이되기를 바랍니다