عبارات منظم در روبی

عبارات منظم (RegEx) با =~، match، sub، gsub و scan در روبی

عبارت منظم (RegEx) چیست؟

عبارت منظم (Regular Expression) الگویی برای جستجو و جایگزینی در متن است. در روبی بین / / نوشته می‌شود.

جستجو با =~

text = "شماره تماس: 09123456789"

if text =~ /\d{11}/
  puts "شماره موبایل پیدا شد!"
end

match

text = "ایمیل: ali@example.com"
m = text.match(/(\w+)@(\w+)/)
if m
  puts "کاربر: #{m[1]}"   # => ali
  puts "دامنه: #{m[2]}"   # => example
end

match? (بولین)

puts "09123456789".match?(/^09\d{9}$/)  # => true
puts "hello".match?(/^[a-z]+$/)         # => true

sub — جایگزینی اولین مورد

text = "روبی عالی است. روبی ساده است."
puts text.sub("روبی", "Ruby")
# => Ruby عالی است. روبی ساده است.

gsub — جایگزینی همه موارد

text = "روبی عالی است. روبی ساده است."
puts text.gsub("روبی", "Ruby")
# => Ruby عالی است. Ruby ساده است.

# با RegEx
phone = "تماس: 09123456789"
hidden = phone.gsub(/\d/, "*")
puts hidden  # => تماس: ***********

scan — استخراج همه موارد

text = "قیمت‌ها: 100، 200 و 300 تومان"
numbers = text.scan(/\d+/)
puts numbers.inspect  # => ["100", "200", "300"]

split با RegEx

text = "علی، مریم؛ حسن|سارا"
names = text.split(/[,؛|]/)
puts names.inspect  # => ["علی", " مریم", " حسن", "سارا"]

کاراکترهای خاص

الگوتوضیح
\dعدد
\wحرف یا عدد یا _
\sفاصله
.هر کاراکتر
*صفر یا بیشتر
+یک یا بیشتر
?صفر یا یک
{n}دقیقاً n بار
^ابتدای خط
$انتهای خط

خلاصه

عملیاتسینتکس
جستجوstr =~ /pattern/
تطابقstr.match(/pat/)
بولینstr.match?(/pat/)
جایگزینی اولstr.sub(/pat/, "new")
جایگزینی همهstr.gsub(/pat/, "new")
استخراجstr.scan(/pat/)

این مبحث بخشی از دوره آموزش کامل روبی است.

ابزارهای مرتبط