By Arnon Puitrakul - 18 มกราคม 2015
วันนี้ก็กลับมาอีกแล้ว วันนี้อยากมาเอง ไม่มีใครจุดธูปเรียก เฮ้ยไม่ใช่ เข้าเรื่องดีกว่า ช่วงนี้ก็เปิดเทอมแล้วก็เลยทำโจทย์อะไรหน่อย พอดีไปเจอโจทย์ข้อนึงใน Google Code Jam แล้วนั่งแก้อยู่ประมาณ 2 ชม. ได้ และก็ทำให้ได้คิดถึง Class ที่จะพูดในวันนี้นั่นคือ Pattern Class
ก่อนจะไปถึง Pattern Class ก่อนอื่นขออธิบายก่อนว่า Regular Expression หรือ Regex คืออะไร ง่ายๆแล้วมันคือการบอกรูปแบบของข้อความ เช่น a* มันอาจจะแปลว่า aa หรือ aaa ไปได้เรื่อยๆ หรือจะเป็น a_b_ ก็อาจจะแปลว่า aabb abb ไปเรื่อยๆ ซึ่งมันก็มีนอกจากเครื่องหมายดอกจันทร์อีก ซึ่งไม่ขอพูด
เราจะมาลองเล่นกันคร่าวๆ เราจะป้อน String เข้าไปอันนึง แล้วก็ String อีกอันที่เป็น Pattern
String in_str = sc.nextLine();
String in_pattern = sc.nextLine();
ถัดมาเราจะมาสร้าง Pattern กัน
Pattern pattern = Pattern.compile(in_pattern);
ถัดมาเราสร้าง Object pattern ขึ้นมาพร้อมกับเรียก Method compile ให้มัน Generate ข้อความจาก Regular Expression ที่เราป้อนเข้าไป
if (pattern.matcher(in_str).matches()) System.out.println("Match");
else System.out.println("Not Match");
ถัดมาเราจะมาเช็คกันในที่นี้ผมใช้If แล้วเรียก Method matcher ขึ้นมาเพื่อเช็คกับ String ที่เราป้อนเข้าไป และเรียก Method matches ทับเพื่อให้มัน Return ค่า เป็น True/False ถ้าเป็น True ก็ให้มันบอกว่ Match หรือถ้าไม่ก็ให้มันบอกว่า Not Match **
รูปแบบของ Regular Expression ที่จะให้Method compile** เรียกนั้นมีหลายแบบสามารถเข้าไปอ่านได้ใน Document ของตัว Java เองได้ ไม่อธิบายเพราะมันเยอะ ตอนนี้ขอเล่น**[]** ก่อน เพราะมันง่ายดี เรามาลองรันกัน ผมป้อนว่า
abc
[abr]b[ad]
เพราะฉะนั้นผลมันออกมาจะเป็น Not Match เพราะว่า เราป้อน Pattern บอกว่าตัวแรกอาจจะเป็น a,b,r เท่านั้นก็คือผ่าน ตัวที่ 2 ก็คือ b แน่นอนก็ตรงอีก มาตัวสุดท้าย เป็นได้เฉพาะ a หรือ d เท่านั้นซึ่งไม่ตรงมันเลยออกมาเป็น Not Match ตามที่เราโปรแกรมไว้
**Source Code : **https://drive.google.com/folderview?id=0BwrPA9Miv4o2NkZWUHpjV0ZXY2M&usp=sharing
เราเป็นคนที่อ่านกับซื้อหนังสือเยอะมาก ปัญหานึงที่ประสบมาหลายรอบและน่าหงุดหงิดมาก ๆ คือ ซื้อหนังสือซ้ำเจ้าค่ะ ทำให้เราจะต้องมีระบบง่าย ๆ สักตัวในการจัดการ วันนี้เลยจะมาเล่าวิธีการที่เราใช้ Obsidian ในการจัดการหนังสือที่เรามีกัน...
หากเราเรียนลงลึกไปในภาษาใหม่ ๆ อย่าง Python และ Java โดยเฉพาะในเรื่องของการจัดการ Memory ว่าเขาใช้ Garbage Collection นะ ว่าแต่มันทำงานยังไง วันนี้เราจะมาเล่าให้อ่านกันว่า จริง ๆ แล้วมันทำงานอย่างไร และมันมีเคสใดที่อาจจะหลุดจนเราต้องเข้ามาจัดการเองบ้าง...
ก่อนหน้านี้เราเปลี่ยนมาใช้ Zigbee Dongle กับ Home Assistant พบว่าเสถียรขึ้นเยอะมาก อุปกรณ์แทบไม่หลุดออกจากระบบเลย แต่การติดตั้งมันเข้ากับ Synology DSM นั้นมีรายละเอียดมากกว่าอันอื่นนิดหน่อย วันนี้เราจะมาเล่าวิธีการเพื่อใครเอาไปทำกัน...
เมื่อหลายวันก่อนมีพี่ที่รู้จักกันมาถามว่า เราจะโหลด CSV ยังไงให้เร็วที่สุด เป็นคำถามที่ดูเหมือนง่ายนะ แต่พอมานั่งคิด ๆ ต่อ เห้ย มันมีอะไรสนุก ๆ ในนั้นเยอะเลยนี่หว่า วันนี้เราจะมาเล่าให้อ่านกันว่า มันมีวิธีการอย่างไรบ้าง และวิธีไหนเร็วที่สุด เหมาะกับงานแบบไหน...