Ruby 正規表現: 一致して位置を取得します
概要
正規表現に一致し、一致した文字列内の位置を取得したいと考えています
例えば、
"AustinTexasDallasTexas".match_with_posn /(Texas)/
match_with_posn が次のようなものを返したいと考えています: [6, 17] ここで、6 と 17 は単語 Texas の両方のインスタンスの開始位置です。
このようなことはありますか?
解決策
Ruby 1.8.6 以降を使用すると、次のことができます。
require 'enumerator' #Only for 1.8.6, newer versions should not need this.
s = "AustinTexasDallasTexas"
positions = s.enum_for(:scan, /Texas/).map { Regexp.last_match.begin(0) }
これにより、次の配列が作成されます。
=> [6, 17]