การแทนที่ Notepad ++ ไม่ทำงานสำหรับนิพจน์ปกติ


3

แก้ไข

พิสูจน์ว่ามันควรใช้งานได้: http://regexr.com?30pf2


ฉันพยายามที่จะแทนที่สิ่งที่เกิดขึ้นทั้งหมด, ไม่ได้อยู่ในเครื่องหมายคำพูดด้วย~

20,72275,Epidurography,1
21,72285,X-Ray C/T Spine Disk,1
22,72291,"Perc Vert/Sacroplasty, Fluor",1
23,72292,"Perc Vert/Sacroplasty, Ct",1

กลายเป็น

20~72275~Epidurography~1
21~72285~X-Ray C/T Spine Disk~1
22~72291~"Perc Vert/Sacroplasty, Fluor"~1
23~72292~"Perc Vert/Sacroplasty, Ct"~1

Regex ของฉันทำงานได้อย่างมีเสน่ห์ แต่ฉันไม่สามารถแทนที่ค่าที่พบได้ Notepad ++ เน้นเครื่องหมายจุลภาคที่จะแทนที่ แต่ผ่านไปโดยไม่ทำการเปลี่ยนแปลงใด ๆ เมื่อฉันคลิกปุ่มแทนที่

หาอะไร: (,)(?=(?:[^"]|"[^"]*")*$)

แทนที่ด้วย: ~

ฉันพยายามคิดค่าอื่น ๆ แล้ว~ก็สงวนไว้อย่างใด แต่ตัวละครอื่น ๆ หรือชุดของตัวละครก็ไม่ได้ผลเหมือนกัน หวังว่านี่เป็นเพียงผลลัพธ์ของการกำกับดูแลในส่วนของฉัน ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

ฉันใช้ Notepad ++ v6.1.1

ขอบคุณ! NotePad ++ ScreenShot

Regex จากhttps://stackoverflow.com/questions/632475/regex-to-pick-commas-outside-of-quotes


ผมไม่แน่ใจว่าเกี่ยวกับ v6.1.1 แต่ v.5.9.3 ไม่สนับสนุนlookaroundsแสดงออกปกติของคุณใช้
เดนนิส

1
@Dennis - ณ วันที่ v6 "รองรับPCRE (รองรับการใช้งานปกติของนิพจน์ปกติ Perl) " ซึ่งรองรับการสลับ / Lookarounds
Brandon Boone

ฉันเพิ่งอัปเดตและนิพจน์ปกติของคุณใช้งานได้เฉพาะเมื่อคลิกReplace Allเท่านั้น ฟังดูเหมือนข้อผิดพลาด
เดนนิส

สำหรับฉันมันไม่เคยเสร็จสมบูรณ์เมื่อฉันใช้แทนที่ทั้งหมด มันแขวนจนกว่าฉันจะต้องฆ่ามัน การก้าวผ่านทีละครั้งด้วยการแทนที่แสดงให้เห็นว่ามันกลับไปที่ด้านบนของไฟล์หลังจากถึงด้านล่าง แต่เนื่องจากมันไม่เคยแทนที่สิ่งใดเลยมันจะติดอยู่ในวงวนไม่สิ้นสุด ฉันคิดว่าคุณพูดถูกมันเป็นบั๊ก แต่ฉันก็อยากจะแน่ใจ
Brandon Boone

ฉันมี 9655 สายดังนั้นฉันอาจจะไม่อดทนพอ ฉันจะลองอีกครั้งและรอ ขอบคุณสำหรับความช่วยเหลือของคุณ!
Brandon Boone

คำตอบ:


4

นี่เป็นเพราะบั๊กในเอ็นจิน RegEx ของ Notepad ++ ( รายงานบั๊ก )

เมื่อใช้การยืนยันคำค้นหาที่มีความกว้างเป็นศูนย์การคลิกแทนที่ก็ไม่มีผลใด ๆ !

ยกตัวอย่างเช่นแทนที่T(?=E)ด้วยการจัดแสดงพฤติกรรมเดียวกันเมื่อใช้กับสตริงBTEST

การคลิกแทนที่ทั้งหมดทำหน้าที่เป็นวิธีแก้ปัญหาจนกว่าจะได้รับการแก้ไข


0

|สัญลักษณ์ไพพ์ในปัจจุบันจะไม่สนับสนุนใน Notepad ++

เวอร์ชันล่าสุดNotepad 10.1.1รองรับ|ใน RegEx


ดูบรรทัดที่ 23 เพื่อดูว่ามีใครบางคนโหวตคุณ
Rob

@Rob: ฉันได้อัปเดตคำตอบของฉันหลังจากที่มันถูกลดระดับลงแล้ว ตอนนี้มันเป็นคำตอบล่าสุด
Siva Charan

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