หัด Regex กับมะระ

จิงๆไปแอบเขียนไว้ใน blog ส่วนตัว แต่คิดว่าน่าจะมีประโยชน์กับชาบคลับ เลยตัดมาแปะไว้ดีกว่า ก็ขออนุญาตแปะห้วนๆเลยนะคับ ขี้เกียจแต่งคำใหม่

จำได้ว่าครั้งแรกที่ผมรู้จัก regex คือ ผมให้คนลงทะเบียนขอรับแผ่น chantra กับ suriyan ผ่านหน้า regis อะไรสักอย่างของ mambo ซึ่งพอคนกรอกแล้ว มันจะส่งข้อมูลให้ผมทางเมล์ ทีนี้พี่ที่ฝ่ายต้องการข้อมูลออกมาเพื่อให้บริษัทอื่นเอาไปส่ง cd ให้ ก็ดูในไฟล์ที่มันรวมเมล์ไว้ แล้วมันมีข้อความที่ไม่ต้องการอยู่เยอะพอสมควร จรูญเลยเขียน shell script เพื่อคัดข้อความที่ไม่ต้องการออก ให้เหลือแค่ ชื่อที่อยู่ให้ และจากคราวนั้น ผมเลยประทับใจ regex มาก

ก็ อ่าน ทำตาม อย่างลวกๆ ง่ายๆ ก็ผมอิงจากอันนี้ http://analyser.oli.tudelft.nl/regex/index.html.en เขียนอ่านง่ายดี มีคำสั่งประกอบ

ก็อันแรกเขาสอนใช้ egrep ซึ่งผมยังไม่เห็นความต่างกับ grep ตรงไหน ก่อนลงมือเขาให้ไฟล์ประกอบตามนี้ครับ http://analyser.oli.tudelft.nl/regex/en/fruits.txt ก็โหลดมาเก็บไว้ก่อน

เปิดเทอร์มินอล cd ไปอยู่ไดเรคทอรี่เดียวกับที่เซฟไฟล์ไว้

Meta Characters
$egrep pear fruits.txt
pear

ผลคือ เรียกบรรทัดที่มีคำว่า pear ขึ้นมาแสดง

$egrep ea fruits.txt
pear
peach

ผลคือ เรียกบรรทัดที่มีคำว่า ea ขึ้นมาแสดง

$egrep a fruits.txt
apple
orange
pear
peach
grape
banana

เรียกบรรทัดที่มีตัว a ขึ้นมาแสดง

$egrep -v a fruits.txt
blueberry
plum

เรียกบรรทัดที่ไม่มีตัว a ขึ้นมาแสดง

Anchors
$egrep ^p fruits.txt
pear
peach
plum

เรียกบรรทัดที่มีข้อความขึ้นต้นด้วยตัว p ขึ้นมาแสดง

$egrep 'e$' fruits.txt
apple
orange
grape

เรียกบรรทัดที่ลงท้ายด้วยตัว e ขึ้นมาแสดง

$egrep '^' fruits.txt
apple
orange
pear
peach
grape
banana
blueberry
plum

ถ้าแปลตรงๆก็คงแปลว่า เรียกทุกบรรทัดที่ขึ้นต้นด้วยอะไรก็ได้มั๊ง แต่พอลองแทรกบรรทัดว่างๆเข้าไป มันก็แสดงอยู่ดี อันนี้งงๆ

ตอนต่อไปใช้ไฟล์ประกอบอันนี้ครับ http://analyser.oli.tudelft.nl/regex/en/cats.txt

$egrep '\<cat' cats.txt
cat
cattle
catalog
scrawny cat

แสดงบรรทัดใดๆก็ตาม ที่มี cat เป็นอักษรขึ้นต้นของคำ

$egrep 'cat\>' cats.txt
cat
scrawny cat
wildcat

ก็กลับกัน เอาอันที่มีอักษร cat ลงท้ายคำขึ้นมาแสดง

จบวันแรกคับ เบื่อล๊ะ

Comments

lancaster's picture

"จิงๆไปแอบเขียนไว้ใน blog ส่วนตัว แต่คิดว่าน่าจะมีประโยชน์กับ<strong>ชาบ</strong>คลับ เลยตัดมาแปะไว้ดีกว่า ก็ขออนุญาตแปะห้วนๆเลยนะคับ ขี้เกียจแต่งคำใหม่"
gumara's picture

ฮ่ะๆ เขียนผิดครับ ไม่แก้ด้วย ดิบดี (จิงๆแล้วข้ออ้างก็บอก ;P)