所有する量指定子は貪欲で、バックトラックを拒否します。正規表現/.{1,3}+b/
は、以下を意味する必要があります。改行を除くすべての文字に1〜3回、可能な限り一致させ、バックトラックしないでください。文字はb
と一致します。この例では所有している総称量子{m、n} +はRuby 1.9.3で実装されていませんか?
:
'ab'.sub /.{1,3}+b/, 'c' #=> "c"
無置換が事実に反し場所を取る必要があります。この2つの例で
結果が異なります。
'aab'.sub /.{0,1}+b/, 'c' #=> "c"
'aab'.sub /.?+b/, 'c' #=> "ac"
は、彼らが同じ答えを与えるスカラ座、とこれを比較します
scala> ".{0,1}+b".r.replaceAllIn("aab", "c")
res1: String = ac
scala> ".?+b".r.replaceAllIn("aab", "c")
res2: String = ac
これはRubyのバグで、またはそれがやる気にさせることも可能ですこの行動は?おそらく、何らかの理由でOnigurumaは、総量限定子{m,n}
を除いて、すべての量限定子で所有者を実装した?
、*
、+
?その場合、なぜですか?本当に何が起こる
Onigurumaが範囲限定子の所有権を無効にしている理由はわかりません - おそらくあなたは関係する人々に尋ねるべきです。 – nhahtdh