ฉันจะแทนที่อักขระในส่วนสุดท้ายของเส้นทางเฉพาะในบรรทัดที่ระบุโดยใช้ Notepad ++ ได้อย่างไร
วิธีที่ดีที่สุดและเป็นไปได้เพียงอย่างเดียวคือ regex สิ่งนี้ใช้เวลาคิดเล็กน้อย แต่สิ่งต่อไปนี้ควรใช้งานได้:
ค้นหา : (?<!\\)(?!.*\\)_(?=.*Lnk)
แทนที่ด้วย :
(อักขระเว้นวรรค↑)
(ในปัจจุบัน / เอกสารทั้งหมด NB: '
'คืออักขระเว้นวรรค)
คำอธิบาย
เพื่อให้ตรงกับชิ้นส่วน หลังจากแบ็กสแลชสุดท้าย เรารวมการมองเชิงลบเข้าด้วยกันกับการมองเชิงลบ: (?<!\\)(?!.*\\)
.
(ฉันยอมรับว่าส่วนนี้เป็นเวทย์มนตร์สีดำเล็กน้อยซึ่งฉันก็ยังไม่เข้าใจ - \
ข้างหลังและไม่ \
ตามด้วยตัวอักษรใด ๆ ข้างหน้า?)
ตรงกับขีดล่าง: _
คุณต้องการจับคู่เฉพาะบรรทัดที่ตรงกับ Application
ทางลัดดังนั้นเราจึงมั่นใจว่า บรรทัดลงท้ายด้วย ' Lnk
' โดยใช้ lookahead เชิงลบ: (?=.*Lnk)
สรุป
ดังนั้นทั้งหมดมัน ตรงกับขีดล่าง แต่เท่านั้น หลังจากแบ็กสแลชสุดท้าย และ เฉพาะบรรทัดที่ลงท้ายด้วย 'Lnk' . นั่นคือ, (?<!\\)(?!.*\\)_(?=.*Lnk)
การสาธิต

ลองใช้ใน regex101!
ฉันสามารถใช้บรรทัดที่คุณให้ไว้เท่านั้น แต่หากพวกเขาเป็นไปตามสมมติฐานเหล่านั้น (ทำงานในส่วนสุดท้ายหลังจากแบ็กสแลชขีดล่างและลงท้ายด้วย 'Lnk') มันควรจะทำงานได้ดีสำหรับบรรทัดอื่นเช่นกัน