นั่งคิดอยู่นานเรื่องของการตัดคำภาษาไทยที่น่าจะมีวิธีง่ายๆ ในฟังก์ชั่นไม่กี่บรรทัดที่ตัดคำได้เร็วพอควร และความถูกต้องในระดับที่ดูเว็บแล้วไม่ปวดหัว
ตอนนี้ก็ได้มาอันนึงแล้ว
((?=[\u0e01\u0e02\u0e04\u0e07\u0e08\u0e0a\u0e0b\u0e14\u0e15\u0e16\u0e17\u0e19\u0e1a\u0e1b\u0e1c\u0e1e\u0e21\u0e22\u0e23\u0e25\u0e27\u0e2a\u0e2b\u0e2d\u0e40\u0e41\u0e42\u0e43\u0e44])(?:\u0e17(?:\u0e33(?:\u0e43\u0e2b\u0e49)?|\u0e35\u0e48|(?:\u0e32|\u0e31\u0e49)\u0e07|\u0e48\u0e32\u0e19)|\u0e40(?:\u0e23(?:\u0e37\u0e48\u0e2d\u0e07|\u0e32)|\u0e02\u0e49?\u0e32|\u0e1e(?:\u0e23\u0e32\u0e30|\u0e37\u0e48\u0e2d)|(?:[\u0e1b\u0e2b]\u0e47|\u0e0a\u0e48)\u0e19|\u0e21\u0e37\u0e48\u0e2d|\u0e01\u0e34\u0e14|\u0e14\u0e47\u0e01|\u0e27\u0e25\u0e32)|\u0e01(?:\u0e31[\u0e1a\u0e19]|\u0e32\u0e23|\u0e47|\u0e25\u0e38\u0e48\u0e21|\u0e27\u0e48\u0e32)|\u0e43(?:\u0e2b(?:\u0e49|\u0e21\u0e48)|\u0e19|\u0e0a\u0e49)|\u0e21(?:\u0e32\u0e01?|\u0e35|\u0e31\u0e19)|\u0e02(?:\u0e2d\u0e07|\u0e36\u0e49\u0e19)|\u0e08(?:[\u0e30\u0e19]|\u0e32\u0e01|(?:\u0e36|\u0e23\u0e34)\u0e07)|\u0e41(?:\u0e25(?:\u0e30|\u0e49\u0e27)|\u0e15\u0e48|\u0e2b\u0e48\u0e07|\u0e1a\u0e1a)|\u0e44(?:[\u0e14\u0e27]\u0e49|\u0e21\u0e48|\u0e1b|\u0e17\u0e22)|\u0e27(?:\u0e48\u0e32|\u0e31\u0e19)|\u0e04(?:\u0e27\u0e32\u0e21|\u0e19|\u0e37\u0e2d)|\u0e19(?:\u0e35\u0e49|\u0e31\u0e49\u0e19|\u0e32\u0e22)|\u0e2b(?:\u0e23\u0e37\u0e2d|\u0e19\u0e36\u0e48\u0e07|\u0e25\u0e32\u0e22)|\u0e2d(?:\u0e22(?:\u0e39\u0e48|\u0e48\u0e32\u0e07)|[\u0e35\u0e2d]\u0e01|\u0e32\u0e08|(?:\u0e37\u0e48|\u0e31)\u0e19|\u0e30\u0e44\u0e23)|\u0e15(?:\u0e48(?:\u0e32\u0e07|\u0e2d)|\u0e49\u0e2d\u0e07|\u0e32\u0e21|\u0e31\u0e27)|\u0e14(?:\u0e49(?:\u0e27\u0e22|\u0e32\u0e19)|\u0e35)|\u0e16(?:\u0e36\u0e07|\u0e49\u0e32|\u0e39\u0e01)|\u0e1c(?:\u0e39\u0e49|[\u0e21\u0e25])|\u0e1b(?:\u0e23\u0e30\u0e40\u0e17\u0e28|\u0e35|\u0e31\u0e0d\u0e2b\u0e32)|\u0e2a(?:\u0e31\u0e07\u0e04\u0e21|\u0e32\u0e21\u0e32\u0e23\u0e16|\u0e48\u0e27\u0e19|\u0e34\u0e48\u0e07|\u0e33\u0e04\u0e31\u0e0d)|(?:\u0e0b\u0e36\u0e48|\u0e22\u0e31|\u0e1a\u0e32|\u0e25)\u0e07|\u0e42\u0e14\u0e22|\u0e23\u0e31\u0e1a|\u0e0a\u0e35\u0e27\u0e34\u0e15|\u0e07\u0e32\u0e19|\u0e1e\u0e23\u0e23\u0e04))
เผื่อใครงง (งงแน่อ่ะดิ เล่นไม่อธิบายเลย) ไอ้ข้างบนนี่คือ Regular Expression ที่ได้จากการ Optimize 100 คำแรกที่พบบ่อยในภาษาไทย ทำให้สามารถนำไปใช้เป็นตัวตัดคำภาษาไทยในบราวเซอร์ที่เป็น Gecko-Based ได้ ที่ได้มานี่เป็นผลพวงจากความพยายามหาทางที่ง่ายๆ เอามาใช้ใน k-meleon
Credit
สุดท้าย เข้าไปทดสอบการใช้งานได้ (ที่นี่) ระวังอย่าใช้ IE เข้าไป เพราะมันจะช้ามาก
Update: เขียนไปเขียนมา ก็ได้เป็น Firefox Extension กันไปใช้งาน เท่าที่ลองยังคงมีบั๊กอยู่เยอะ โดยเฉพาะพวก Attribute ต่างๆ แต่งานนี้ก็พอใช้งานได้ (ลองเข้า manager แล้วไม่ระเบิด) ไว้ว่างๆ ค่อยมาเขียนดีๆ อีกที