ส่งออกนิพจน์ทั่วไปที่ตรงกันทั้งหมดใน Textpad หรือ Notepad ++ เป็นรายการ


28

ใน Textpad หรือ Notepad ++ มีตัวเลือกให้ส่งออกรายการที่ตรงกันทั้งหมดสำหรับการค้นหานิพจน์ทั่วไปเป็นรายการเดียวหรือไม่

ในไฟล์ข้อความขนาดใหญ่ฉันกำลังค้นหาแท็ก (คำที่อยู่ใน%%) โดยใช้นิพจน์ทั่วไป%\< and \>%และต้องการรายการที่ตรงกันทั้งหมดเป็นรายการเดียวเพื่อให้ฉันสามารถลบรายการที่ซ้ำกันโดยใช้ Excel และรับรายการแท็กที่ไม่ซ้ำกัน


ถ้าคุณใช้ปลั๊กอิน RegexExtract สำหรับ Notepad ++ มันสามารถลบรายการที่ซ้ำกันออกไปสำหรับคุณและไม่จำเป็นต้องโพสต์กระบวนการด้วย Excel
R. Schreurs

คำตอบ:


53

คุณสามารถทำได้โดยใช้ฟังก์ชัน Backreferencesและ Find and Mark ใน Notepad ++

  1. ค้นหาการแข่งขันโดยใช้ regex (พูด%(.*?)%) และแทนที่ด้วย\n%\1%\nหลังจากนี้เราจะมีคำเป้าหมายของเราในบรรทัดแยก (เช่นไม่มีบรรทัดจะมีคำที่ตรงกันมากกว่าหนึ่งคำ)

  2. ใช้การค้นหา -> ค้นหา -> ทำเครื่องหมายฟังก์ชั่นเพื่อทำเครื่องหมายแต่ละบรรทัดด้วย regex %(.*?)%และอย่าลืมทำเครื่องหมาย ' เส้นคั่นหน้า ' ก่อนทำเครื่องหมายข้อความ

  3. เลือกค้นหา -> คั่นหน้า -> ลบเส้นที่ไม่มีเครื่องหมาย
  4. บันทึกข้อความที่เหลือ มันเป็นรายการที่จำเป็น

ฉันมีไฟล์อีกหนึ่งไฟล์ที่มี <> เป็นแท็กแทนที่จะเป็น%% ฉันลองด้วย <(. *?)> และ \ n <\ 1> \ n แต่มันไม่ทำงานโปรดช่วยด้วย
Kiranshell

คุณยินดีต้อนรับ :) สำหรับฉันมันทำงานกับ <> ด้วย มีซ้อนกัน <> หรือไม่ คุณช่วยอธิบายสิ่งที่ 'ไม่ทำงาน' ได้อย่างแน่นอนว่าอะไร?
Ankit

ฉันพยายามสร้างรายการแท็กเหมือนก่อน แต่สิ่งเหล่านี้เคยมี <> ฉันใช้ <(. *?)> แทน% (. *?)% และ \ n <\ 1> \ n แทนที่จะเป็น \ n % \ 1% \ n นี่คือลิงค์ไปยังไฟล์ตัวอย่างwikisend.com/download/158050/tags.txt
Kiranshell

ฉันลองอีกครั้งโดยใช้ข้อความที่ให้ไว้และใช้ <(. *?)> มันใช้งานได้ตามปกติ ฉันได้รับรายการแท็ก <Supplies> <hostname> ..... และอื่น ๆ
Ankit

โปรดระบุข้อผิดพลาด / ปัญหาที่แน่นอนที่คุณมี อาจฟังดูงี่เง่า แต่อย่าลืมเลื่อนเคอร์เซอร์ขึ้นไปด้านบนฉันมักจะทำผิดพลาดและผลการค้นหากลับไม่ได้ผล ... :)
Ankit

5

การทำเช่นนี้ใน Notepad ++ เป็นข้อกำหนดที่จำเป็นหรือไม่ คุณใช้ Windows หรือ Unix ในบางรูปแบบหรือไม่ หากคุณใช้ Windows คุณสามารถทำได้ (บางส่วน) จากพรอมต์คำสั่ง:

findstr / r "% [az]. * [az]% [az]%" your_file > new_file

findstrได้รับแรงบันดาลใจจากรางgrepดังนั้นnew_fileนี้ จะมีบรรทัดทั้งหมดที่ตรงกับเกณฑ์การค้นหาของคุณ จากนั้นคุณสามารถใช้ Notepad ++ เพื่อตัดข้อความที่ไม่ต้องการออก (ทางซ้ายของ% แรกและไปทางขวาของข้อความที่สอง)


และแน่นอนถ้าคุณใช้ระบบปฏิบัติการยูนิกซ์คุณสามารถทำงานที่เทียบเท่าsedได้


จากคำตอบที่ดีที่สุด!
Charles-Antoine Fournel

2

มีปลั๊กอิน Notepad ++ ซึ่งสามารถคัดลอกนิพจน์ regex ที่ตรงกันไปยังไฟล์ใหม่ในแท็บใหม่ RegexExtract

เนื่องจากฉันไม่พบปลั๊กอินใด ๆ สำหรับ Notepad ++ ที่สามารถแยกข้อความบางส่วนจากเอกสารปัจจุบันหรือไฟล์ทั้งหมดจากตำแหน่งด้วยการตั้งค่าเพิ่มเติมบางอย่าง (เช่นการแปลงกรณี) ฉันจึงตัดสินใจลองด้วยตัวเอง (... ) ส่วนต่อประสานปลั๊กอินค่อนข้างตรงไปตรงมา (... ) (... ) ฟิลด์ "ค้นหา", "แทนที่" และ "หน้ากาก" ใช้ไวยากรณ์ของ regex C ++ 11 การแยกจากไฟล์ใช้งานได้ในขณะนี้สำหรับไฟล์ใน UTF8 เท่านั้น

แก้ไข กล่องโต้ตอบอินพุทที่ปรับให้เหมาะกับคำถาม

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

ในภาพคุณสามารถดูวิธีการกรอกข้อมูลในกล่องโต้ตอบ ฉันคิดว่าคำไม่มีช่องว่าง ฯลฯ มีเพียงอักขระที่ตรงกับ \ w สะดุดตา:

  • ใช้เครื่องหมายวงเล็บคู่หนึ่งเพื่ออนุญาตให้เลือกคำโดยไม่ใช้ตัวอักขระการรับรู้
  • เลือกตัวเลือกแยกพร้อมแทนที่เพื่อเลือกคู่แรก มิฉะนั้นคุณจะได้รับผลลัพท์แบบเสาของ $ 1, $ 2, ฯลฯ
  • ทำเครื่องหมายข้าม $ & ...เพื่อออกจากการแข่งขันที่สมบูรณ์
  • ตรวจสอบตัวกรองที่ไม่ซ้ำกันเพื่อรายงานการแข่งขันแต่ละครั้งเพียงครั้งเดียว
  • คลิกแยกเพื่อเลือกรับผลลัพธ์ ( ค้นหาเพียงพบการแข่งขัน แต่ไม่ได้รายงาน)

ปลั๊กอินที่ดีทำสิ่งที่ถูกถาม
ร. Schreurs

ดูเหมือนว่าจะไม่ทำงานกับ Notepad แบบ 64 บิต 64
Ivan Chau

0

ใน TextPad คุณจะแสดงFindกล่องตามปกติจากนั้นใช้Mark Allปุ่ม

จากนั้นใช้Copy Bookmarked Linesฟังก์ชั่น (เมนูแก้ไข> คัดลอกอื่น ๆ > บรรทัดที่คั่นไว้)


โดยส่วนตัวแล้วฉันจะทำงานที่แน่นอนบ่อยครั้งที่ฉันได้กำหนดค่าแป้นพิมพ์ลัดสำหรับฟังก์ชั่นคัดลอกเส้นคั่น: Ctrl + Alt + c
daveloyall

ฉันมาถึงคำถามนี้เพราะฉันกำลังค้นหาคำถาม Notepad ++ หลังจากหลายปีในฐานะผู้ใช้ Textpad ที่ภักดีและไม่ต้องจ่ายเงินฉันก็เปลี่ยนมาใช้ Notepad ++ (GPL)
daveloyall
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.