การแก้ไขข้อความ ระหว่างคำ ในไฟล์ XML ด้วย Regular Expression

ในกรณีที่ต้องการเปลี่ยนแปลงข้อความใน text file เช่น 

สมมุติว่า มีไฟล์ xml ดังข้างล่างนี้


ต้องการเปลี่ยน คำว่า "ข้อ 1" ซึ่งอยู่ระหว่าง <qNum> และ </qNum> เป็นอย่างอื่น เช่น <qNum>id1627193500:date1627453500</qNum> จะทำอย่างไร

อย่างนี้ก็ต้องใช้ regular expression เข้ามาช่วย โดยใช้ lookbehind คือ (?<=) และ look ahead คือ (?=) เช่น

(?<=<qNum>)(.*)(?=</qNum>)

  • เครื่องหมาย () เป็นการจัดกลุ่ม ข้อความข้างต้น มี 3 กลุ่ม คือ  (?<=<qNum>) และ (.*) และ (?=</qNum>)
  • ?<= คือ อะไรที่อยู่หลังส่วนนี้
  • <qNum> คือ ข้อความที่ระบุว่า ให้อยู่หลังอะไร
  • .* คือ แทนอะไรก็ได้
  • ?= คือ อะไรที่อยู่ก่อนหน้าส่วนนี้
  • </qNum> คือ ข้อความที่ต้องการให้อยู่ก่อน อะไรก็ได้ที่อยู่ก่อนนี้
เพราะฉะนั้น ก็จะได้ว่า ส่วนที่จะให้แทนที่ คือ อะไรก็ได้ ที่อยู่หลัง <qNum> และ อยู่ก่อนคำว่า </qNum>

ทีนี้ ปัญหาต่อไปคือ แล้วจะใช้ editor อะไร ที่จะใช้ regular expression นี้
ลองใช้ EditPlus ผลที่ได้ คือ
ลองใช้ Microsoft Word ก็ไม่ได้เหมือนกัน

แต่ มี Text Editor ตัวหนึ่ง คือ Notepad++ ซึ่งสามารถงาน Regular Expression ได้ดี ผลจากการค้นหาและแทนที่ คือ


Notepad++   ดาวน์โหลดและใช้ได้ฟรี

อีกตัวหนึ่ง คือ EditPad Lite สามารถใช้ได้ดี กับ Regular Expression

ผลที่ได้คือ


สรุปว่า

ถ้าจะใช้ Regular Expression ควรใช้ EditPad จะดีกว่า เพราะนอกจากจะใช้ได้ฟรี (รุ่น Lite และใช้เป็น Personal) แล้ว ยังใช้ง่าย มีตัวเลือกฟังก์ชันเยอะ และใช้ Regular Expression ได้ดีอีกด้วย










ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

อุปมา อุปไมย สำนวนการเปรียบเทียบ ของไทย

ความสามารถทั่วไปด้านเหตุผล การหาความสัมพันธ์จาก ภาพ สัญลักษณ์

แนวข้อสอบ เงื่อนไขสัญลักษณ์