Skip to content

[PHP] ใช้ regex แบบ negative lookahead ใน MongoDB query

syntax regex ใน PHP อ้างอิงตาม PCRE (Perl Compatible regular expression)  การ match ข้อความแบบ negative lookahead คือ match กับอักขระใดๆ ทั้งหมดยกเว้นตัวที่เรากำหนด งงใช่ไหม? คนอธิบายก็งง ดูตัวอย่างดีกว่า

สมมุติว่าผมมี regex เป็น t(?!s) และมี text “streets” ใน case นี้จะ match “t” ตัวแรก ถ้าเปลี่ยน regex เป็น (?!s)t จะ match กับ “t” ตัวที่ 2 เพราะ “t” ตัวที่ 2 ไม่ขึ้นต้นด้วย “s”

สรุปคือมันเอาไว้ match ข้อความจากคำถามที่ว่า “ต้องการข้อความ X ที่ไม่ขึ้นต้นด้วย Y” นั่นเอง

โจทย์ของผมคือต้องการ query ทวีตที่ไม่ขึ้นต้นด้วย RT (case-insensitive) จะได้เขียน query ได้ตามนี้

ในกรณีนี้เนื่องจาก match แบบ case-insensitive ต้องใส่ $options => ‘i’ ด้วย

อ้างอิง

Be First to Comment

Leave a Reply

Your email address will not be published.