ฉันพยายามทำ regex ง่าย ๆ ที่จะตรวจสอบว่าบรรทัดว่างหรือไม่
กรณี;
"    some"   // not blank
"   " //blank
"" // blankฉันพยายามทำ regex ง่าย ๆ ที่จะตรวจสอบว่าบรรทัดว่างหรือไม่
กรณี;
"    some"   // not blank
"   " //blank
"" // blankคำตอบ:
รูปแบบที่คุณต้องการมีลักษณะเช่นนี้ในโหมดหลายบรรทัด:
^\s*$คำอธิบาย:
^ เป็นจุดเริ่มต้นของจุดยึดสตริง$ เป็นจุดสิ้นสุดของจุดยึดสตริง\s เป็นคลาสอักขระช่องว่าง* คือการทำซ้ำของศูนย์หรือมากกว่าในโหมดหลายบรรทัด^และ$ยังจับคู่จุดเริ่มต้นและจุดสิ้นสุดของบรรทัด
นอกจากนี้คุณยังสามารถตรวจสอบว่าสตริงที่กำหนดlineเป็น "ว่าง" (เช่นมี whitespaces เท่านั้น) โดยtrim()-ing มันแล้วตรวจสอบว่าสตริงที่เกิดisEmpty()ขึ้น
ใน Java สิ่งนี้จะเป็นดังนี้:
if (line.trim().isEmpty()) {
    // line is "blank"
}โซลูชัน regex ยังสามารถทำให้ง่ายขึ้นโดยไม่ต้องเบรก (เนื่องจากวิธีที่matchesกำหนดไว้ใน Java) ดังต่อไปนี้:
if (line.matches("\\s*")) {
    // line is "blank"
}String String.trim()
boolean String.isEmpty()
trueถ้าหากว่าเป็นlength()0boolean String.matches(String regex)
if line.strip():   เนื่องจากสตริงว่างจะประเมินเป็นFalse
                    จริง ๆ แล้วในโหมดหลายบรรทัดคำตอบที่ถูกต้องคือ:
/((\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gmคำตอบที่ยอมรับ: ^\s*$ไม่ตรงกับสถานการณ์เมื่อบรรทัดสุดท้ายว่างเปล่า (ในโหมดหลายบรรทัด)
ลองสิ่งนี้:
^\s*$\sยังตรงกับตัวแบ่งบรรทัดดังนั้นคุณจะไม่ "ค้นหา" บรรทัดว่างเปล่าเดียวภายในสตริงที่มีบรรทัดว่างที่ต่อเนื่องกัน
                    regex แบบพกพาส่วนใหญ่จะ^[ \t\n]*$ตรงกับสตริงว่าง (โปรดทราบว่าคุณจะต้องแทนที่\tและ\nมีแท็บและขึ้นบรรทัดใหม่ตามลำดับ) และ[^ \n\t]เพื่อจับคู่สตริงที่ไม่ใช่ช่องว่าง
[ \t]
                    \rการขึ้นบรรทัดใหม่เพื่อให้ regex เป็น^[ \t\r\n]*$เช่นนั้น แต่^\s*$จะดีกว่า - กระชับมากขึ้น หากคุณไม่ต้องการจับคู่บรรทัดใหม่คุณสามารถใช้\h(หมายถึงช่องว่างในแนวนอน) เช่นเดียวกับใน^\h*$
                    ให้เครดิตเต็มที่กับbchr02   สำหรับคำตอบนี้ อย่างไรก็ตามฉันต้องปรับเปลี่ยนนิดหน่อยเพื่อจับภาพสถานการณ์สำหรับบรรทัดที่มี*/(สิ้นสุดความคิดเห็น) ตามด้วยบรรทัดว่าง regex */ได้รับการจับคู่สายที่ไม่ว่างเปล่ากับ
ใหม่:  (^(\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm
ทั้งหมดที่ฉันทำคือการเพิ่ม^เป็นอักขระตัวที่สองเพื่อบ่งบอกจุดเริ่มต้นของบรรทัด
ที่นี่ว่างหมายถึงสิ่งที่คุณหมายถึง 
บรรทัดประกอบด้วย whitespaces เต็มหรือบรรทัดไม่มีอะไรเลย 
หากคุณต้องการจับคู่บรรทัดที่ไม่มีอะไรให้ใช้ '/ ^ $ /'
ดี ... ฉันแก้ไขมันโดยใช้ notepadd ++) และนี่คือวิธีแก้ปัญหาที่ฉันพบ
\ 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 หลังนี้จะตรงกับบรรทัดคุณสามารถตรวจสอบและดูความแตกต่างได้ฉันขอแนะนำให้คุณแก้ไขคำตอบของคุณให้ชัดเจนยิ่งขึ้นเกี่ยวกับสิ่งที่คุณกำลังให้คำแนะนำ มัน