[英]Ruby global match regexp?
在其他語言中,在 RegExp 中,您可以使用/.../g
進行全局匹配。
但是,在 Ruby 中:
"hello hello".match /(hello)/
只捕獲一個你好。
我如何捕獲所有hello
?
您可以使用掃描方法。 scan 方法要么給你一個所有匹配的數組,要么,如果你傳遞一個塊,將每個匹配傳遞給該塊。
"hello1 hello2".scan(/(hello\d+)/) # => [["hello1"], ["hello2"]]
"hello1 hello2".scan(/(hello\d+)/).each do|m|
puts m
end
我已經寫過關於這種方法的文章,你可以在接近文章末尾的地方閱讀它。
使用String#scan
。 它將返回每個匹配項的數組,或者您可以傳遞一個塊,並且每個匹配項都會調用它。
http://ruby-doc.org/core/classes/String.html#M000812 上的所有詳細信息
這里有一個提示,供任何人尋找用其他東西替換所有正則表達式匹配的方法。
Ruby 不像許多其他語言那樣使用 //g 標志和一種替換方法,而是使用兩種不同的方法。
# .sub — Replace the first
"ABABA".sub(/B/, '') # AABA
# .gsub — Replace all
"ABABA".gsub(/B/, '') # AAA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.