Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การทำงานของ \B (Non-word Boundary) ใน Regular Expression ของ Python

ขอบเขตคำ \b จับคู่ตำแหน่งที่ด้านหนึ่งเป็นอักขระคำ (word character: ตัวอักษร ตัวเลข หรือ underscore) และอีกด้านหนึ่งไม่ใช่

\B จับคู่ ทุกตำแหน่งที่ \b ไม่จับคู่ กล่าวคือ ตำแหน่งที่ทั้งสองด้านเป็นอักขระคำ หรือทั้งสองด้านไม่ใช่อักขระคำ

ตัวอย่าง: ทดสอบ \Bcat

import re
result1 = re.findall(r'\Bcat', 'certificate')
result2 = re.findall(r'\Bcat', 'tomcat')
result3 = re.findall(r'\Bcat', 'catfish')
print(result1, result2, result3)

ผลลัพธ์

['cat'] ['cat'] []

คำอธิบาย

  • certificate: "cat" อยู่กลางคำ (รอบๆ เป็นอักขระคำ) → \B จับคู่ได้
  • tomcat: "cat" อยู่ท้ายคำ แต่ตัวก่อนหน้า 'm' เป็นอักขระคำ → \B จับคู่ได้
  • catfish: "cat" อยู่ต้นคำ ตัวหลัง 'f' เป็นอักขระคำ แต่ \B ตรงหน้า 'c' ไม่จับคู่ เพราะตำแหน่งนั้นเป็น \b (ขอบเขตคำ)