عبارات منظم در روبی
عبارات منظم (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/) |
این مبحث بخشی از دوره آموزش کامل روبی است.