ใน Vim คลาสอักขระจะ\s
ตรงกับอักขระช่องว่างใด ๆ เมื่อฉันใช้ตัวอักษรพิเศษผู้ที่อยู่ในกลุ่มเช่น[\s\w]
มันไม่ตรงกับช่องว่างเดียวหรือตัวอักษรคำก็ไม่ตรงหรือs
w
เราใช้คลาสตัวละครในกลุ่มได้อย่างไร
ใน Vim คลาสอักขระจะ\s
ตรงกับอักขระช่องว่างใด ๆ เมื่อฉันใช้ตัวอักษรพิเศษผู้ที่อยู่ในกลุ่มเช่น[\s\w]
มันไม่ตรงกับช่องว่างเดียวหรือตัวอักษรคำก็ไม่ตรงหรือs
w
เราใช้คลาสตัวละครในกลุ่มได้อย่างไร
คำตอบ:
นั่นไม่ใช่กลุ่มมันเป็นช่วงและใน Vim คุณไม่สามารถใช้คลาสอักขระได้ (แม้ว่าจะเป็นไปได้ในการใช้งาน regex อื่น ๆ เช่นในไพ ธ อน ) คุณจะต้องใช้ทางเลือกแทน:
/\(\w\|\s\)
หรือ:
/\v(\s|\w)
(หรือวิธีแก้ปัญหาที่เสนอโดยPeter Lewerin )
\s
ในคลาสของตัวละคร การใช้ regex ของ Vim นั้นเกิดขึ้นเพื่อให้มีทางเลือก แต่การใช้งานอื่น ๆ ทำให้คุณสามารถใช้งาน[\s]
ได้
ต่างจากการใช้เอ็นจิ้นนิพจน์ทั่วไปบางอย่างดูเหมือนว่า Vim จะไม่สนับสนุนสัญกรณ์นั้น ( [\s\w]
) ในคอลเล็กชัน หนึ่งสามารถใช้การแสดงออกของคลาสตัวละคร POSIXแม้ว่า
[:blank:]
\s
เป็นเช่นเดียวกับ[:space:]
ตรงกับจำนวนมากของตัวอักษรช่องว่างกว่าไม่และดูเหมือนว่าจะเทียบเท่ากับ\s
\_s
[:alnum:]
ประมาณ \w
แต่ไม่ตรงกับขีดล่าง ( _
)ดังนั้นคอลเลกชันที่คุณต้องการอาจจะเขียนเป็นหรือ[[:blank:][:alnum:]_]
[[:space:][:alnum:]_]
ผมยังไม่ได้รับการตรวจสอบโดยการทดสอบนี้ แต่มันถูกบันทึกไว้ใน:h regexp
, และ:h /character-classes
:h /collection
หมายเหตุการพกพา: ในเอ็นจิน regex อื่น ๆ\s
โดยทั่วไปจะเหมือนกับ[:space:]
(หรือ\_s
) อยู่ในกลุ่ม
[[:space:][:alnum:]_]
สามารถใช้เพื่อประมาณค่าคอลเลกชัน\s
และ\w
แม้ว่า