การใช้เรกุลาร์เอ็กเพรสชัน

Ruby:
การใช้เรกุลาร์เอ็กเพรสชัน

วิธีการ:

การจับคู่พื้นฐาน

เพื่อจับคู่สตริงกับรูปแบบง่าย ๆ คุณสามารถใช้เมธอด match ด้านล่าง เรากำลังตรวจสอบว่าคำว่า “Ruby” มีอยู่ในสตริงที่กำหนดหรือไม่

if /Ruby/.match("Hello, Ruby!")
  puts "พบการจับคู่!"
end
# ผลลัพธ์: พบการจับคู่!

การจับคู่รูปแบบด้วยตัวแปร

คุณสามารถฝังตัวแปรเข้าไปใน regex ของคุณโดยใช้ไวยากรณ์ #{} ทำให้รูปแบบของคุณเป็นแบบไดนามิก

language = "Ruby"
if /#{language}/.match("การเขียนโปรแกรมด้วย Ruby สนุก.")
  puts "พูดถึง Ruby!"
end
# ผลลัพธ์: พูดถึง Ruby!

การใช้ Regex สำหรับการแทนที่

เมธอด gsub ช่วยให้คุณเปลี่ยนทุกครั้งที่ปรากฏรูปแบบด้วยสตริงที่ระบุเพื่อแทนที่

puts "foobarfoo".gsub(/foo/, "bar")
# ผลลัพธ์: barbarbar

การจับกลุ่ม

วงเล็บใน regex ใช้สำหรับการจับกลุ่มส่วนหนึ่งของการจับคู่ เมธอด match จะคืนค่าวัตถุ MatchData ซึ่งคุณสามารถใช้เพื่อเข้าถึงการจับกลุ่ม

match_data = /(\w+): (\d+)/.match("อายุ: 30")
puts match_data[1] # ป้ายกำกับที่จับกลุ่ม
puts match_data[2] # ค่าที่จับกลุ่ม
# ผลลัพธ์:
# อายุ
# 30

การใช้ไลบรารีของบุคคลที่สาม

แม้ว่าไลบรารีมาตรฐานของ Ruby จะมีพลังมาก คุณอาจต้องการความสามารถพิเศษบางอย่างบ้างเป็นบางครั้ง หนึ่งใน gem ยอดนิยมสำหรับการทำงานกับ regex คือ Oniguruma ซึ่งทำให้มีคุณสมบัติเพิ่มเติมในการทำงานกับ regex ที่เกินไปกว่าเครื่องยนต์ regex ภายในของ Ruby

ติดตั้งโดยใช้:

gem install oniguruma

ตัวอย่างการใช้งานอาจจะดูเหมือนนี้ (โดยสมมติว่าคุณได้เรียกร้อง oniguruma หลังจากติดตั้งเสร็จ):

# นี่เป็นตัวอย่างขั้นสูงและอาจจำเป็นต้องตั้งค่าเพิ่มเติม
require 'oniguruma'

pattern = Oniguruma::ORegexp.new('(\d+)')
match_data = pattern.match("หมายเลขคือ 42.")
puts match_data[1]
# ผลลัพธ์: 42

จำไว้ว่า แม้ว่านิพจน์ปกติจะมีความสามารถมาก แต่ก็สามารถกลายเป็นความซับซ้อนและยากที่จะจัดการได้สำหรับรูปแบบที่ซับซ้อนมากขึ้น มุ่งเน้นไปที่ความสามารถในการอ่าน และพิจารณาวิธีการอื่น ๆ หาก regex ของคุณกลายเป็นเรื่องที่ซับซ้อนเกินไป