ฉันจะลบอักขระที่ไม่ใช่ ASCII ทั้งหมดด้วย regex และ Notepad ++ ได้อย่างไร


147

ฉันค้นหามาก แต่ก็ไม่มีวิธีเขียนวิธีลบอักขระที่ไม่ใช่ ASCII ออกจาก Notepad ++

ฉันจำเป็นต้องรู้ว่าคำสั่งที่จะเขียนในการค้นหาและแทนที่ (ด้วยภาพมันจะดี)

  • ถ้าฉันต้องการทำบัญชีขาวและทำบุ๊คมาร์คคำ / บรรทัด ASCII ทั้งหมดดังนั้นบรรทัดที่ไม่ใช่ ASCII จะถูกยกเลิกการทำเครื่องหมาย

  • หากไฟล์มีขนาดค่อนข้างใหญ่และไม่สามารถเลือกบรรทัด ASCII ทั้งหมดและเพียงต้องการเลือกบรรทัดที่มีอักขระที่ไม่ใช่ ASCII ...

คำตอบ:


263

นิพจน์นี้จะค้นหาค่าที่ไม่ใช่ ASCII:

[^\x00-\x7F]+

ติ๊ก 'โหมดการค้นหา = แสดงออกปกติ' Find Nextและคลิก

ที่มา: Regex อักขระ ASCII ใด ๆ


4
และในกรณีที่ไม่ชัดเจนถ้าคุณลบ "^" คุณกำลังค้นหาบรรทัด ASCII
Mike M

7
ทำงานได้ดี Encoding->Encode in ANSIแต่ผมต้องชุด ไม่พบสิ่งใดเป็นอย่างอื่น
FoamyGuy

1
ทำงานได้อย่างสมบูรณ์ในเน็ตด้วยตัวเลือก regexp-search (ปุ่มดอกจัน)
Teson

ทำงานใน VS-Code อย่าลืมคลิกตัวเลือกการค้นหา Regex!
yashhy

4
หากคุณต้องการเก็บ \ r และ \ n - อักขระขึ้นบรรทัดใหม่และตัวป้อนบรรทัด - คุณสามารถใช้ regex นี้: [\ x00- \ x09 \ x0B- \ x0C \ x0C \ x0E- \ x1F] +
Steffen Winkler

53

ใน Notepad ++ หากคุณไปที่เมนูค้นหาค้นหาตัวละครที่อยู่ในช่วงอักขระที่ไม่ใช่ ASCII (128-255)คุณสามารถข้ามเอกสารไปยังอักขระที่ไม่ใช่ ASCII แต่ละตัวได้

ตรวจสอบให้แน่ใจว่าได้เลือก "ปิดล้อม " หากคุณต้องการวนซ้ำในเอกสารสำหรับอักขระที่ไม่ใช่ ASCII ทั้งหมด

สกรีนช็อต "ค้นหาในช่วง"


3
วิธีนี้ใช้งานได้ดี แต่ไม่แสดงผลลัพธ์ทั้งหมดในรายการและไม่มีตัวเลือก "แทนที่"
Alex

เรียบร้อย ... เพราะฉันลืม regex สำหรับผู้ที่ไม่ใช่ ASCII และต้องไปที่ Google ทุกครั้งเพื่อกลับไปที่หน้านี้ :)
Jean-Francois T.

27

นอกเหนือจากคำตอบของ ProGM ในกรณีที่คุณเห็นตัวละครในกล่องอย่าง NUL หรือ ACK และต้องการที่จะกำจัดพวกมันเหล่านั้นคือ ASCII อักขระควบคุม (0 ถึง 31) คุณสามารถค้นหาพวกมันด้วยนิพจน์ต่อไปนี้และลบออก:

[\x00-\x1F]+

ในการลบอักขระควบคุมที่ไม่ใช่ ASCII และ ASCII ทั้งหมดคุณควรลบอักขระทั้งหมดที่ตรงกับ regex นี้:

[^\x1F-\x7F]+

ค่าจาก\x00และ\x1Fถูกจับคู่ในคำตอบโดย ProGM แล้ว
Unihedron

2
พวกเขากำลังจับคู่เป็นค่าที่คุณต้องการเก็บไว้ ฉันแค่แนะนำสิ่งนี้ในกรณีที่คุณต้องการกำจัดพวกเขา
brunorey

ตัวอย่างสุดท้ายควรเริ่มต้นที่ 20 เพื่อแยกอักขระตัวคั่นหน่วย อาจยกเว้น 7F และเป็นตัวควบคุมด้วย
fgb

ยอดเยี่ยม! ฉันลบอักขระที่ไม่ใช่ ASCII ที่น่ารำคาญทั้งหมดโดยใช้แพ็คเกจ qdap R โดยใช้:mgsub("[^\x1F-\x7F]+", "", text_vector, fixed = FALSE)
Pablo Adames

22

หากต้องการลบอักขระที่ไม่ใช่ ASCII ทั้งหมดคุณสามารถใช้การแทนที่ต่อไปนี้: [^\x00-\x7F]+

การลบที่ไม่ใช่ ASCII

หากต้องการเน้นอักขระฉันแนะนำให้ใช้เครื่องหมายฟังก์ชันในหน้าต่างค้นหา: ไฮไลต์อักขระที่ไม่ใช่ ASCII และใส่ที่คั่นหน้าไว้ในบรรทัดที่มีหนึ่งในนั้น

หากคุณต้องการไฮไลต์และใส่บุ๊กมาร์กบนอักขระ ASCII แทนคุณสามารถใช้ regex [\x00-\x7F]เพื่อทำเช่นนั้นได้

ไฮไลต์ Non-ASCII

ไชโย


1
ถ้าคุณต้องการคัดลอกนิพจน์การค้นหา [^ \ x00- \ x7F] +
hyena

2
หากคุณต้องการเก็บ \ r และ \ n - อักขระขึ้นบรรทัดใหม่และตัวป้อนบรรทัด - คุณสามารถใช้ regex นี้: [\ x00- \ x09 \ x0B- \ x0C \ x0C \ x0E- \ x1F] +
Steffen Winkler

4

ในการคงบรรทัดใหม่:

  1. ก่อนอื่นเลือกตัวอักษรสำหรับบรรทัดใหม่ ... ฉันใช้ #
  2. เลือกตัวเลือกแทนที่ขยาย
  3. อินพุต \ n แทนที่ด้วย #
  4. กดแทนที่ทั้งหมด

ต่อไป:

  1. เลือกตัวเลือกแทนที่นิพจน์ปกติ
  2. ป้อนข้อมูลนี้: [^ \ x20- \ x7E] +
  3. ให้แทนที่ด้วยว่าง
  4. กดแทนที่ทั้งหมด

ตอนนี้เลือกแทนที่ตัวเลือกเพิ่มเติมและแทนที่ # ด้วย \ n

:) ตอนนี้คุณมีไฟล์ ASCII ที่สะอาด;)


3

เคล็ดลับที่ดีอีกข้อหนึ่งคือเข้าสู่โหมด UTF8 ในเครื่องมือแก้ไขของคุณเพื่อที่คุณจะได้เห็นตัวละครตลกเหล่านี้และลบมันเอง


1

อีกวิธีหนึ่ง ...

  1. ติดตั้งปลั๊กอิน Text FX หากคุณยังไม่ได้ติดตั้ง
  2. ไปที่ตัวเลือกเมนู TextFX -> zap อักขระที่ไม่สามารถพิมพ์ได้ทั้งหมดเพื่อ # มันจะแทนที่ตัวอักษรที่ไม่ถูกต้องทั้งหมดด้วยสัญลักษณ์ 3 #
  3. ไปที่ค้นหา / แทนที่แล้วมองหา ### แทนที่ด้วยช่องว่าง

นี่เป็นสิ่งที่ดีถ้าคุณจำ regex ไม่ได้หรือไม่สนใจที่จะค้นหามัน แต่ regex พูดถึงโดยคนอื่นเป็นวิธีที่ดีเช่นกัน


การจับคู่อักขระทั้งหมดแทนที่เครื่องหมายวรรคตอนทุกชนิดด้วย ### วิธีแก้ปัญหาที่ฉันคาดหวังคือ: การแทนที่“ &” ด้วย "การแทนที่ '&' ด้วย 'ฯลฯ
Kasim Husaini

มันใช้งานได้ดี แต่เครื่องมือแทนที่ตัวตลกด้วย # char และไม่ใช่สาม โปรดจดบันทึก
Raghav

1
ปลั๊กอิน Text FX เลิกใช้แล้วและอาจไม่สามารถใช้งานได้อีกต่อไป ดูเช่นอนาคตของ TextFX - "เมื่อรายการเติบโตนานพอมันจะกลายเป็นประโยชน์ในการกล่าวคำอำลากับผู้สูงอายุที่ให้บริการชุมชนได้ดี"
Peter Mortensen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.