みたいな構成で
string.scan(regex){...}
また
string.gsub(regex){...}
ループサイクルの一致が元の文字列の前のサイクルに隣接しているかどうかを確認するにはどうすればよいですか? たとえば、
"abaabcaaab".scan(/a+b/){|match|
...
continued = ...
...
}
"ab"
、 、 の3 つの一致が"aab"
あり"aaab"
ます。各サイクル中に、変数continued
をfalse
、true
、およびにする必要がありfalse
ます。これ"ab"
は、 が最初の一致サイクルで"aab"
あり、それに隣接しており"c"
、次の一致の前に中断するため"aaab"
です。
"ab" #=> continued = false
"aab" #=> continued = true
"aaab" #=> continued = false
前の一致位置の末尾を参照する、origuruma にアンカーはありますか? もしそうなら、それは正規表現で使用されるかもしれません。そうでない場合は、おそらく次のようなものを使用する必要がありますMatchData#offset
。ループ内でいくつかの計算を行います。
ところで、\G
おりぐるまの正規表現って何?私が欲しいアンカーかもしれないという印象がありましたが、それが何であるかはわかりません。