簡體   English   中英

Ruby 全局匹配正則表達式?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM