Bir satır boş olup olmadığını kontrol edecek basit regex yapmaya çalışıyorum.
Durum;
" some" // not blank
" " //blank
"" // blank
Bir satır boş olup olmadığını kontrol edecek basit regex yapmaya çalışıyorum.
Durum;
" some" // not blank
" " //blank
"" // blank
Yanıtlar:
İstediğiniz desen çok satırlı modda şöyle bir şeydir:
^\s*$
Açıklama:
^ dize çapasının başlangıcıdır.$ dize çapasının sonu.\s boşluk karakter sınıfıdır.* , sıfır veya daha fazla tekrarıdır.Çok satırlı modda ^ve $aynı zamanda satırın başlangıcı ve bitişi ile eşleşir.
Ayrıca, verilen bir dizenin line"boş" (yani yalnızca boşluk içeren) trim()olup olmadığını ve ardından dize olup olmadığını kontrol edebilirsiniz isEmpty().
Java'da bu şöyle bir şey olurdu:
if (line.trim().isEmpty()) {
// line is "blank"
}
Normal ifade çözümü, bağlantısız olarak ( matchesJava'da nasıl tanımlandığından dolayı ) aşağıdaki gibi basitleştirilebilir :
if (line.matches("\\s*")) {
// line is "blank"
}
String String.trim()
boolean String.isEmpty()
truedurumunda ve ancak eğer length()olduğunu 0.boolean String.matches(String regex)
if line.strip(): boş bir dize değerlendirir beri hiçFalse
Aslında çok satırlı modda daha doğru bir cevap şudur:
/((\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm
Kabul edilen cevap: ^\s*$son satır boş olduğunda (çok satırlı modda) bir senaryo ile eşleşmez.
Bunu dene:
^\s*$
\ssatır sonlarıyla da eşleştiğini unutmayın , bu nedenle art arda boş satırlar içeren bir dize içinde tek bir boş satır "bulamazsınız".
En taşınabilir regex olacağını ^[ \t\n]*$(Değiştirmeye gerek olacağını not boş bir dize maç için \tve \nbuna göre sekmesi ve yeni satır ile) ve [^ \n\t]bir boşluk olmayan dize eşleşecek.
[ \t]
\rnormal ifadenin olması için satır başı karakterini de dikkate almanız gerekir ^[ \t\r\n]*$. Ama ^\s*$daha iyi - daha özlü. Yeni satırlarla eşleşmek istemiyorsanız, \h(yatay boşluk anlamına gelir)^\h*$
Bu cevap için bchr02'ye tam kredi . Ancak, boş bir satır (yorum sonu) olan satırlar için senaryo yakalamak için biraz değiştirmek zorunda kaldı . Normal ifade boş olmayan satırla eşleşiyordu .*/*/
Yeni: (^(\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm
Tek yaptığım ^satırın başlangıcını göstermek için ikinci karakter olarak eklemek .
Şey ... Etrafımda dolaştım (notepadd ++ kullanarak) ve bulduğum çözüm bu
\ N \ s
\ n satır sonu için (eşleştirmeye başladığınız yer) - satırın başlangıcının bir dize olması nedeniyle düzeltme benim için yararlı olmaz \ s sonraki dizeye kadar herhangi bir alan kaplar
Umarım yardımcı olur
test_vec <- c(" some"," ",""). Çözümünüz: grepl("\\n\\s",test_vec) # [1] FALSE FALSE FALSE, çözüm olarak: grepl("^\\s*$",test_vec) # [1] FALSE TRUE TRUE. oylanan çözüm beklenen sonucu verir, sizinkini vermez.
ctrl+f, notepad ++ ile mi yapıyorsunuz ? Bu durumda, "Genişletilmiş" Arama modunu seçip '\ n \ s' yi arayarak boş satırları bulabilirsiniz (gerçekte eşleşmese de), "Normal İfade" yi seçerseniz dizeniz aynıdır ve şunları yapabilirsiniz: Ayrıca @polygenelubricants'ın çözümünü de deneyin. o.