Prac07.txt คำชี้แจง ------ แบบฝึกหัดชุดนี้มี ๓ ตอน เป็นแบบฝึกหัดสำหรับนิพจน์ปรกติ (Regular expresssion หรือ regexp) ตอนที่ ๑ ======= นิพจน์ปรกติ (Regular expression หรือ regexp) ต่อไปนี้ จับคู่หรือตรงกับสายอักขระในตัวเลือกข้อใดบ้าง คำตอบในแต่ละข้ออาจมีได้หลายตัวเลือก ในแต่ละข้อคิดคำตอบให้ได้ก่อน แล้วจึงตรวจสอบด้วยคำสั่ง egrep หรือ grep -E คำชี้แจง: ก. การตรวจสอบด้วยคำสั่ง egrep หรือ grep -E ทำได้โดยการเตรียมตัวเลือกของแต่ละไว้ในแฟ้ม เช่น ข้อ ๑ $ cat item1.dat abababa aaba aabbaa aba aabababa $ egrep 'a(ab)*a' item1.dat ... ... ... ข. หากต้องการป้อนข้อมูลทดสอบโดยตรงจากแป้นพิมพ์ (ไม่ต้องการสร้างแฟ้ม ตามข้อ ก.) เรียกใช้งาน egrep ในแต่ละข้อ ตามวิธีการสำหรับข้อ ๑ ดังนี้ $ egrep 'a(ab)*a' หรือ $ egrep 'a(ab)*a' - จากนั้นจึงป้อนข้อความของตัวเลือกทีละตัว หากตัวเลือกใดตรงกับนิพจน์ปรกติ egrep จะพิมพ์บรรทัดนั้นใต้ข้อความของผู้ใช้ หากไม่ตรงกันจะไม่มัการพิมพ์ เมื่อเสร็จตัวเลือกหนึ่งแล้วป้อนตัวเลือกตัวต่อไป เมื่อหมดตัวเลือกแล้ว กดแป้น ^D เพื่อส่งรหัสปิดแฟ้ม ค. ในกรณีที่สงสัยว่า นิพจน์ปรกติตรงกับกลุ่มอักขระใดในข้อความ ให้กำหนดตัวเลือก -o เพื่อให้ egrep แสดงเฉพาะอักขระที่ตรงกันเท่านั้น ง. ในแต่ละข้อ นอกจากตัวเลือกที่กำหนดแล้ว ควรดำหนดข้อความอื่นเพิ่มเติม จะช่วยสร้างความเข้าใจให้ดียิ่งขึ้น คำถาม: ๑. นิพจน์ปรกติ 'a(ab)*a' จับคู่หรือตรงกับสายอักขระในข้อใด ก. abababa ข. aaba ค. aabbaa ง. aba จ. aabababa ๒. นิพจน์ปรกติ 'ab+c?' จับคู่หรือตรงกับสายอักขระในข้อใด ก. abc ข. ac ค. abbb ง. bbc ๓. นิพจน์ปรกติ 'a.[bc]+' จับคู่หรือตรงกับสายอักขระในข้อใด ก. abc ข. abbbbbbbb ค. azc ง. abcbcbcbc จ. ac ฉ. asccbbbbcbcccc ๔. นิพจน์ปรกติ 'abc|xyz' จับคู่หรือตรงกับสายอักขระในข้อใด ก. abc ข. xyz ค. abc|xyz ๕. นิพจน์ปรกติ '[a-z]+[\.\?!]' จับคู่หรือตรงกับสายอักขระในข้อใด ก. battle! ข. Hot ค. green ง. swamping. จ. jump up. ฉ. undulate? ช. is.? ๖. นิพจน์ปรกติ '[a-zA-Z]*[^,]=' จับคู่หรือตรงกับสายอักขระในข้อใด ก. Butt= ข. BotHEr,= ค. Ample ง. FIdDlE7h= จ. Brittle = ฉ. Other.= ๗. นิพจน์ปรกติ '[a-z][\.\?!]\s+[A-Z]' จับคู่หรือตรงกับสายอักขระในข้อใด เมื่อกำหนดให้ \s เป็นรูปย่อของ [:space:] ก. A. B ข. c! d ค. e f ง. g. H จ. i? J ฉ. k L ๘. นิพจน์ปรกติ '(very )+(fat )?(ugly|tall)' จับคู่หรือตรงกับสายอักขระในข้อใด ก. very fat man ข. fat tall man ค. very very fat ugly man ง. very very very tall man ๙. นิพจน์ปรกติ '<[^>]+>' จับคู่หรือตรงกับสายอักขระในข้อใด ก. ข. ค. ง. <> จ. ผลการทดสอบตรงกับที่คิดไว้หรือไม่? หากไม่ตรงกันหาเหตุผลให้ได้ว่า คิดผิดที่จุดใด ตอนที่ ๒ ======== จงเติมนิพจน์ปรกติในคำสั่ง egrep ด้านขวามือ เพื่อให้ได้ผลลัพธ์ตามที่กำหนด ๑. $ cat ex01.dat $ egrep '... ... ... ...' ex01.dat Pot pit part respite peat slap two pit spate pt spot respite slap two spate spot ๒. $ cat ex02.dat $ grep '... ... ... ...' ex02.dat 87ap9th 87ap9th Apt apothecary aleht apth apothecary rap them apples sap tray apth tapeth ddapdg wrap/try happy them path rap them sap tray shape the tapeth tarpth tarreth wrap/try ตอนที่ ๓ ======= ๑. จงเขียนนิพจน์ปรกติ สำหรับหาบรรทัดที่มีคำภาษาอังกฤษ ที่มีความหมายว่า "รวบรวม" หรือ "จัดระบบ" ซึ่งเขียนได้สองแบบคือ organise (UK English) และ organize (American English) ๒. จงเขียนนิพจน์ปรกติสำหรับหาเลขฐานสิบหกในภาษา C ซึ่งขึ้นต้นด้วย 0x หรือ 0X ตามด้วยเลขฐานสิบหก อักษร A-F ที่ใช้จะเป็นอักษรตัวเล็กหรือตัวใหญ่ก็ได้ ตัวเลขฐานสิบหกต้องมีอย่างน้อยหนึ่งหลัก ๓. จงเขียนนิพจน์ปรกติสำหรับนิสิตที่ลงทะเบียนเรียนในรายวิชา 886326 (ก). สำหรับนิสิตภาคปรกติ และ (ข). สำหรับนิสิตภาคพิเศษในแต่ละชั้นเรียน คำแนะนำ -- รหัสนิสิต 8 หลัก : yy ff xxxx เมื่อ yy ปีการศึกษา -- รหัส 56, 57 และ 58 ff รหัสคณะ -- วิทยาการสารสนเทศ ภาคปรกติ 16, ภาคพิเศษ 66 xxxx 4-digit sequence no. ๔. จงเขียนนิพจน์ปรกติสำหรับหมายเลขโทรศัพท์เคลื่อนที่ตามรูปแบบมาตรฐาน รูปแบบมาตรฐาน 0x xyyy yyyy หรือ 0x-xyyy-yyyy นิยมใช้ 0xx yyy yyyy หรือ 0xx-yyy-yyyy หมายเหตุ ------- รหัสสำหรับหมายเลขโทรศัพท์เคลื่อนที่ในประเทศไทยที่ใช้งานในปัจจุบันได้แก่ 081, 083, 084, 085, 086, 087, 088, 089 และ 06x, 09x ที่มา: th.wikipedia.org/wiki/หมายเลขโทรศัพท์ในประเทศไทย ๕. จงเขียนนิพจน์ปรกติสำหรับ URL (Uniform resource locator) หรือ web address ซึ่งอาจใช้งานตามรูปแบบใดรูปแบบหนึ่งดังต่อไปนี้ http://en.wikipedia.org/ https://mail.buu.ac.th http://www.informatics.buu.ac.th https://mail.buu.ac.th www.informatics.buu.ac.th www.buu.ac.th หมายเหตุ ------- รูปแบบของ URL มาตรฐานเป็นดังนี้ ://[:]/ เมื่อ โดยทั่วไปเป็นชื่อโพรโตคอล เช่น http, https, ftp แต่อาจเป็นชื่ออื่นได้ เช่น mailto ซึ่งไม่ใช่โพรโตคอล, file เป็นการระบุชื่อแฟ้มใน localhost ชื่อ domain ขอ งเครื่องแม่ข่าย หรือ IP address ของเครื่องแม่ข่าย [:] หมายเลขพอร์ต อาจมีหรือไม่ก็ได้ ชื่อเส้นทางไปยัง web page ที่ต้องการ