จะแยกบางส่วนของบรรทัดและต่อท้ายบรรทัดใน VIM ด้วย regex ได้อย่างไร


คำตอบ:


2

วิธีหนึ่งในการทำเช่นนั้น:

:s:\(.*//\)\([^/]*\)\(/.*\):\1\2\3 \2:

คำอธิบาย:

  • :s: - การใช้การทดแทน
  • \(.*//\) - จับภาพส่วนที่ทับสอง (กลุ่ม 1)
  • \([^/]*\) - จับทุกอย่างที่ไม่ใช่สแลช (กลุ่ม 2)
  • \(/.*\) - เก็บสแลชเดี่ยวครั้งแรกและทุกอย่างหลังจากนั้น (กลุ่ม 3)
  • :\1\2\3 \2: - กลุ่มเอาต์พุต 1, 2 และ 3 ตามด้วยช่องว่างและกลุ่ม 2 อีกครั้ง

แก้ไข:

คุณสามารถเรียงลำดับสิ่งต่อไปนี้เพื่อ:

:s:\(.*//\)\([^/]*\)\(/.*\):& \2:

เครื่องหมาย outputs สตริงที่ตรงกันทั้งหมดซึ่งรวมถึงสายทั้งตั้งแต่ regex .*เริ่มต้นและจบลงด้วยการ คุณสามารถใช้\0แทนเครื่องหมายแอมเปอร์แซนด์


และมีกลุ่มเอาท์พุทที่มีทั้งบรรทัดที่มีการแข่งขันหรือไม่?
sumek

@sumek: โปรดดูคำตอบที่แก้ไขแล้วของฉัน
Dennis Williamson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.