เมื่อเราต้องการค้นหาคำ (หรือแทนที่ด้วย) ในตัวแปรสตริง เราสามารถกำหนดรูปแบบการค้นหาหรือคำที่ใช้ในการค้นหาได้ โดยรูปแบบในการค้นหาและแทนที่คำมีดังนี้
# s/regular expression/string ที่ต้องการแทนที่/ # เช่น $pet = "I love my cat.\n"; $pet =~ s/cat/dog/; print $pet; # $pet = "I love my dog.\n"; # หมายความว่า ค้นหาคำว่า cat แล้วแทนที่ด้วยคำว่า dog
แต่ในกรณีที่มีคำที่เราต้องการแทนที่หลายคำในตัวแปรนั้น ๆ เราต้องเพิ่ม Flag เข้าไปดังนี้
$pet = "I love my cat. My cat is genuis.\n"; $pet =~ s/cat/dog/g; print $pet; # $pet = "I love my dog. My dog is genuis.\n"; # ถ้าเราไม่ใส่ g เข้าไปข้างหลังมันจะทำการแทนที่คำแค่ตัวที่พบครั้งแรกเพียงตัวเดียว
เราสามารถใช้ subexpression ที่มันทำการ matching กับ expression ได้โดยใช้ $1, $2, ... เราลองไปดูตัวอย่างเพื่อให้เห็นภาพง่ายขึ้น
$name = "Tony, King"; $name =~ s/(\w+), (\w+)/$2 $1/; # $name = "Larray Wall"
ในบทความนี้จะเป็นสอนเกี่ยวกับวิธีการค้นหาและแทนที่คำในสตริงเท่านั้น ไม่ได้เจาะลึกไปถึงการใช้ expression หรือ sub expression เท่าไรนัก ซึ่งการใช้งาน expression และ sub expression ได้สอนไว้ในหัวข้อ expression และ sub expression แล้ว มีปัญหาหรือไม่เข้าใจสามารถ Post แจ้งได้นะครับ
Login
Search