これは簡単な質問のはずですが、それについて何も見つかりません。
Ruby で正規表現を指定すると、すべての一致に対して、一致したパターン$1
,を取得する必要があります$2
が、一致する位置も必要です。
=~
オペレーターが最初の一致の位置を教えてstring.scan(/regex/)
くれる一方で、一致するすべてのパターンを教えてくれることはわかっています。可能であれば、両方の結果を同じステップで取得する必要があります。
string.scan(regex) do
$1 # Pattern at first position
$2 # Pattern at second position
$~.offset(1) # Starting and ending position of $1
$~.offset(2) # Starting and ending position of $2
end
次のように、スキャン内で一致データにアクセスできます。
"abcdefghij".scan(/\w/) {p $~}