5

これは簡単な質問のはずですが、それについて何も見つかりません。

Ruby で正規表現を指定すると、すべての一致に対して、一致したパターン$1,を取得する必要があります$2が、一致する位置も必要です。

=~オペレーターが最初の一致の位置を教えてstring.scan(/regex/)くれる一方で、一致するすべてのパターンを教えてくれることはわかっています。可能であれば、両方の結果を同じステップで取得する必要があります。

4

2 に答える 2

9

マッチデータ

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
于 2012-11-27T17:20:10.373 に答える
2

次のように、スキャン内で一致データにアクセスできます。

"abcdefghij".scan(/\w/) {p $~}
于 2012-11-27T17:26:01.593 に答える