การใช้ wildcard search / replace ใน Notepad ++


17

นี่คือปัญหาของฉัน: ในไฟล์. txt ฉันต้องค้นหาและแทนที่อินสแตนซ์ของไวยากรณ์นับพันดังนี้:

(ดู (a053007djfgspwdf))

หรือ

(ดู (a053007djfgspwdf) และ (a54134xsedgeg))

หรือ

(ดู (a053007djfgspwdf), (a9554xsdfgsdfg) และ (a54134xsedgeg))

มีความหลากหลายระหว่างสตริงข้อความเริ่มต้น(ดู (และ (สิ้นสุด)) สามารถตั้งค่านี้ใน Notepad ++ โดยใช้ regex ได้หรือไม่? ถ้าเป็นเช่นนั้นฉันจะทำอย่างไร ขอบคุณ!

คำตอบ:


17

ขออภัยผู้คนฉันเพิ่งพบคำตอบอื่นที่ซับซ้อน (ไม่มีการดูหมิ่นเจตนาต่อโปสเตอร์ต้นฉบับ)

เนื่องจากสิ่งนี้จะปรากฏเป็นผลการค้นหาแรกเสมอฉันจะเพิ่มสิ่งนี้ใน:

  1. เปิดกล่องโต้ตอบการค้นหา / แทนที่ ( CTRL+ Fจากนั้นแท็บแทนที่)
  2. เลือก "นิพจน์ปกติ" ที่ด้านล่าง
  3. ใช้. * เป็นสัญลักษณ์แทน

ตัวอย่างเช่นฉันต้องการลบอินสแตนซ์ทั้งหมดของ abp = "1314", abp = "1313", abp = "1312" เป็นต้น (โดยทั่วไปตัวเลขต่างกันทั้งหมดซึ่งเป็นสาเหตุที่คุณต้องการให้ตัวแทนออกมากำจัด)

ในช่องโต้ตอบแทนที่:

ค้นหาในอะไร: abp=".*"
แทนที่ด้วย:

(คุณกำลังแทนที่อะไรในเครื่องหมายคำพูดเหล่านั้นโดยไม่มีอะไรจะกำจัดมัน)

ที่มา: https://www.organicweb.com.au/17226/general-technology/notepad-wildcard/


15

ใช่มันสามารถ! Notepad ++ มีโหมดค้นหา RegEx ที่คุณสามารถเลือกได้ตามความต้องการการเปลี่ยน RegEx ทั้งหมดของคุณ

ตัวอย่างด้านล่างเป็นการแทนที่แบบพื้นฐานสำหรับสิ่งใด ๆ ก็ตาม(see (a...))ยกเว้นการขึ้นบรรทัดใหม่ คุณอาจต้องแก้ไข RegEx หรือเขียนของคุณเองเพื่อให้เหมาะกับความต้องการของคุณ นี่คือสถานที่ที่ดีเยี่ยมที่จะช่วยคุณในการทดสอบ

RegEx: \(see \(a.+\)\)

สตริงที่ตรงกัน:

(see (a053007djfgspwdf))
(see (a053007djfgspwdf) and (a54134xsedgeg))
(see (a053007djfgspwdf), (a9554xsdfgsdfg) and (a54134xsedgeg))


แทนที่ (ดู (a ... )) ด้วยการแทนที่


ขอบคุณ! พบอินสแตนซ์ของตัวอย่างแรก(ดู (a053007djfgspwdf))แต่ไม่ใช่ตัวอย่างอื่น ยังเป็นการเริ่มต้นที่ดี ฉันจะเล่นกับมันเพื่อดูว่าฉันจะทำอะไรได้อีก หากคุณมีข้อเสนอแนะเพิ่มเติมฉันจะขอบคุณมันมาก ขอบคุณอีกครั้ง.
Michael Tuck

คุณคลิกแทนที่ทั้งหมดหรือคลิกที่แทนที่เพื่อสลับการแข่งขันที่คล้ายกับการใช้ค้นหาถัดไปหรือไม่ ข้อความที่คุณต้องการค้นหาเริ่มต้น(see (aและสิ้นสุดด้วย))หรือไม่ หากคุณมีสายที่สิ้นสุดด้วยวงเล็บเดียวคุณสามารถเปิดสุดท้าย\)ในกลุ่มจับภาพ(\)|)ให้ตรงกับสายที่ลงท้ายด้วย"หรือ")) )
one.time

ลองใช้การแทนที่สองสามครั้งแล้วแทนที่ทั้งหมด หลังจากนั้นสตริงการค้นหาไม่พบสิ่งใด ข้อความสำหรับทุกคนคือ: (ดู ข้อความที่หลากหลาย )) ไม่มีสตริงที่มีวงเล็บเดียวยกเว้นบางทีพิมพ์ผิด
Michael Tuck

ฉันอัปเดตคำตอบของฉันด้วย RegEx สำรอง(\(see \(a|\(a)([^\)]+)\)(\)|)ที่จะจับคู่กับสตริงในคำถามของคุณ
one.time

ฮ่า ๆ คุณปรับปรุงคำตอบของคุณในขณะที่ฉันกำลังแก้ไขคำตอบของฉัน ฉันจะลองใหม่
Michael Tuck

1

ลองใช้รูปแบบนี้: \(see \(a(.*)\)และตรวจสอบให้แน่ใจว่าคุณมี ". จับคู่บรรทัดใหม่" ไม่ถูกตรวจสอบและเลือก "ปิดล้อม"


1

ในขณะที่บางส่วนของเหล่านี้มีความลึกเกินกว่าที่ฉันจะเข้าใจให้ฉันแสดงให้คุณเห็นสิ่งที่ฉันทำหลังจากอ่านวิธีการแก้ปัญหาทั้งหมดเหล่านี้ (นี่เป็นวิธีการง่ายๆอาจไม่ดีที่สุด)

ฉันต้องการลบองค์ประกอบรูปทั้งหมดในหน้าเว็บทั้งหมด รูปที่ 2.1, รูปที่ 1.1, ect

มันเป็น:

<p class="td1-content b8"><span class="stepNumber">2.  </span>Select Memo from the toolbar<br><b>Figure 2.1</b></p>

ฉันอยากให้มันจบลง:

 <p class="td1-content b8"><span class="stepNumber">2.  </span>Select Memo from the toolbar</p>

แต่ละ

มีตัวเลขรูปที่แตกต่างกันดังนั้นฉันใช้มันในข้อความประเสริฐ 2

  1. ctrl H
  2. คลิกที่สัญลักษณ์ ". *" ที่ด้านล่างขวาของ Sublime text 2, (regex)
  3. พิมพ์ <br><b>Figure.*</b>
  4. แทนที่ด้วย: - เว้นว่างไว้

สิ่งนี้แทนที่อินสแตนซ์ทั้งหมดของฉันด้วยตัวเลขในนั้น แจ้งให้ทราบล่วงหน้าฉันใช้. * ซึ่งเป็นจำนวนที่จะได้รับ หวังว่านี่จะช่วยได้


0

regexที่แน่นอนที่คุณต้องการคือ:

\(see \(\w+\)((, \(\w+\))*( and \(\w+\)))?\)

ตัวอย่างเช่น:

ป้อนคำอธิบายรูปภาพที่นี่

เมื่อเลือกค้นหาทั้งหมดในเอกสารปัจจุบันผลลัพธ์จะเป็น:

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถใช้แทนที่ตามความจำเป็นของคุณแทน

หากคุณต้องการรวมaไว้ใน regex คุณสามารถใช้:

\(see \(a\w+\)((, \(a\w+\))*( and \(a\w+\)))?\)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.