สัญลักษณ์เครื่องหมายหมวกภายในเซ็ตใน Regular Expression ของ Python
อย่างที่คุณทราบ เครื่องหมายหมวกภายใน [ ]
จะทำหน้าที่เป็น negation เมื่อเขียนอยู่ที่
ต้นวงเล็บ ซึ่งหมายความว่ามันเป็น
อักขระพิเศษภายในวงเล็บเหลี่ยมเหล่านี้ เพื่อที่จะ
ทำให้เครื่องหมายหมวกเป็นอักขระธรรมดา ต้อง
ทำการ escape มัน หรือย้ายมันออกจากตำแหน่งแรก
ตัวอย่าง
ในตัวอย่างต่อไปนี้ รูปแบบการค้นหาคือ:
อักขระตัวแรกคือทุกอย่างยกเว้น 'd',
จากนั้นตามด้วยตัวอักษรสองตัว 'x':
txt = 'axx bxx ^xx dxx'
res = re.sub('[^d]xx', '!', txt)
print(res)
ผลลัพธ์ที่บันทึกลงในตัวแปรจะเป็นดังนี้:
'! ! ! dxx'
ตัวอย่าง
แต่ตอนนี้รูปแบบการค้นหาคือ: อักขระ
ตัวแรกคือ 'd' หรือ '^',
จากนั้นตามด้วยตัวอักษรสองตัว 'x':
txt = 'axx bxx ^xx dxx'
res = re.sub('[d^]xx', '!', txt)
print(res)
ผลลัพธ์ที่บันทึกลงในตัวแปรจะเป็นดังนี้:
'axx bxx ! !'
ตัวอย่าง
คุณไม่จำเป็นต้องย้ายเครื่องหมายหมวกออกจากตำแหน่งแรกเสมอไป สามารถทำการ escape มันด้วย backslash และมันจะหมายถึงตัวมันเอง:
txt = 'axx bxx ^xx dxx'
res = re.sub('[\^d]xx', '!', txt)
print(res)
ผลลัพธ์ที่บันทึกลงในตัวแปรจะเป็นดังนี้:
'axx bxx ! !'
โจทย์ฝึกปฏิบัติ
กำหนดสตริง:
txt = '^xx axx ^zz bkk @ss'
เขียน regular expression เพื่อค้นหาสตริง ตามรูปแบบ: เครื่องหมายหมวกหรือเครื่องหมาย @ จากนั้น ตามด้วยตัวอักษรละตินสองตัว
กำหนดสตริง:
txt = '^xx axx ^zz bkk @ss'
เขียน regular expression เพื่อค้นหาสตริง ตามรูปแบบ: ไม่ใช่เครื่องหมายหมวกและไม่ใช่เครื่องหมาย @ แต่ จากนั้นตามด้วยตัวอักษรละตินสองตัว
กำหนดสตริง:
txt = '^xx axx ^zz bkk'
เขียน regular expression เพื่อค้นหาสตริง ตามรูปแบบ: ไม่ใช่เครื่องหมายหมวกและไม่ใช่ช่องว่าง แต่ จากนั้นตามด้วยตัวอักษรละตินสองตัว