답변:
원하는 패턴은 여러 줄 모드에서 다음과 같습니다.
^\s*$
설명:
^
문자열 앵커의 시작입니다.$
문자열 앵커의 끝입니다.\s
공백 문자 클래스입니다.*
0 이상의 반복입니다.여러 줄 모드 에서 줄의 시작과 끝 ^
과 $
도 일치합니다.
주어진 문자열 line
이 "공백"인지 (즉 trim()
, 공백 만 포함) 확인한 다음 결과 문자열을 확인하여 확인할 수도 isEmpty()
있습니다.
Java에서는 다음과 같습니다.
if (line.trim().isEmpty()) {
// line is "blank"
}
정규식 솔루션은 matches
다음과 같이 앵커없이 단순화 할 수 있습니다 ( Java로 정의 된 방식 때문에 ).
if (line.matches("\\s*")) {
// line is "blank"
}
String String.trim()
boolean String.isEmpty()
true
있는 경우에 한해 length()
입니다 0
.boolean String.matches(String regex)
if line.strip():
빈 문자열이 평가되기 때문에False
실제로 여러 줄 모드에서 더 정확한 대답은 다음과 같습니다.
/((\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm
수락 된 답변 : ^\s*$
마지막 줄이 비어있는 경우 (여러 줄 모드에서) 시나리오와 일치하지 않습니다.
가장 휴대용 정규식 될 것이다 ^[ \t\n]*$
(당신이 교체해야합니다 빈 문자열과 일치하도록 \t
하고 \n
그에 따라 탭과 줄 바꿈 포함) 및 [^ \n\t]
공백이 아닌 문자열을 일치합니다.
[ \t]
\r
에서는 정규식이되도록 캐리지 리턴 문자도 고려해야합니다 ^[ \t\r\n]*$
. 그러나 ^\s*$
더 좋습니다-더 간결합니다. 당신이 뉴 라인과 일치하지 않을 경우 사용할 수 있습니다 \h
같이 (수평 공백을 의미)^\h*$
이 답변에 대한 bchr02의 전체 크레딧 . 그러나 빈 줄 이있는 (주석 끝) 행에 대한 시나리오를 잡기 위해 약간 수정해야했습니다 . 정규식이 비어 있지 않은 줄과와 일치했습니다 .*/
*/
새로운: (^(\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm
내가 한 것은 ^
줄의 시작을 나타내는 두 번째 문자로 추가 하는 것입니다.
글쎄 ... 내가 고민했다. (padpadd ++ 사용) 이것이 내가 찾은 해결책이다.
\ n \ s
줄 끝의 경우 \ n (일치하는 시작)-행의 시작 부분이 문자열이므로 캐럿은 도움이되지 않습니다. \ s 다음 문자열까지 공간을 차지합니다.
그것이 도움이되기를 바랍니다
test_vec <- c(" some"," ","")
. 귀하의 솔루션 : grepl("\\n\\s",test_vec) # [1] FALSE FALSE FALSE
, 투표 솔루션 : grepl("^\\s*$",test_vec) # [1] FALSE TRUE TRUE
. 투표 솔루션은 예상 결과를 제공하지만 그렇지 않습니다.
ctrl+f
은 notepad ++에서 하고 있습니까? 이 경우 "확장"검색 모드를 선택하고 '\ n \ s'를 검색하여 빈 줄을 찾을 수 있습니다 (실제로 일치하지는 않음). "정규 표현식"을 선택하면 문자열이 동일하게되어 @polygenelubricants의 솔루션을 사용해보십시오. 그것.