From: lord.thom@... Date: 2017-11-12T15:55:38+00:00 Subject: [ruby-core:83743] [Ruby trunk Bug#14101] Unreliable handling of groups nested within absent/absence operator of regex Issue #14101 has been reported by tom-lord (Tom Lord). ---------------------------------------- Bug #14101: Unreliable handling of groups nested within absent/absence operator of regex https://bugs.ruby-lang.org/issues/14101 * Author: tom-lord (Tom Lord) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: 2.5.0 * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- The new absent/absence regex operator, added to Onigmo and bundled into ruby since v2.4.1, supports nested groupings such as: ~~~ruby "abb".match /(?~(a|b)b)/ => # ~~~ However, under some scenarios (I haven't been able to determine the exact cause), the execution fails: ~~~ ruby "abb".match /(?~(a|c)c)/ ArgumentError: negative string size (or size too big) from (irb):1:in `scan' ~~~ Interestingly, when running the above in `pry`, we see some malformed object created: ~~~ ruby "abb".match /(?~(a|c)c)/ #=> # "abb".scan /(?~(a|c)c)/ #=> ArgumentError: negative string size (or size too big) ~~~ I am unclear whether this bug belongs in the ruby project, or Onigmo. Documentation on the operator is still a work in progress (https://github.com/k-takata/Onigmo/issues/87); perhaps nested groups should not be allowed by the engine? -- https://bugs.ruby-lang.org/ Unsubscribe: