Issue #19379 has been updated by jeremyevans0 (Jeremy Evans).
mame (Yusuke Endoh) wrote in #note-5:
I wonder if this is due to #18294, not #19104.
@jeremyevans0 What do you think?
I agree. #18294 doesn't handle `/(?-x:...)/` inside an extended regular expression as
non-extended syntax. I'll see if I can fix it today.
----------------------------------------
Bug #19379: Regex: "end pattern with unmatched parenthesis" with Ruby 3.2 and
interpolation
https://bugs.ruby-lang.org/issues/19379#change-101524
* Author: renchap (Renaud Chaput)
* Status: Open
* Priority: Normal
* ruby -v: ruby 3.2.0 (2022-12-25 revision a528908271) [arm64-darwin22]
* Backport: 2.7: DONTNEED, 3.0: DONTNEED, 3.1: DONTNEED, 3.2: REQUIRED
----------------------------------------
Sample code:
```
r2 = %r{#c-\w+/comment/[\w-]+}
%r{https?://[^/]+#{r2}}x
```
This works with Ruby 3.1:
```
irb(main):001:0> r2 = %r{#c-\w+/comment/[\w-]+}
irb(main):002:0> %r{https?://[^/]+#{r2}}x
=> /https?:\/\/[^\/]+(?-mix:#c-\w+\/comment\/[\w-]+)/x
```
But fails with Ruby 3.2.0:
```
irb(main):022:0> r2 = %r{#c-\w+/comment/[\w-]+}
irb(main):023:0> %r{https?://[^/]+#{r2}}x
(irb):23:in `<main>': end pattern with unmatched parenthesis:
/https?:\/\/[^\/]+(?-mix:#c-\w+\/comment\/[\w-]+)/x (RegexpError)
```
But if I dont use interpolation, it works correctly:
```
irb(main):001:0> %r{https?://[^/]+#c-\w+/comment/[\w-]+}x
=> /https?:\/\/[^\/]+#c-\w+\/comment\/[\w-]+/x
```
--
https://bugs.ruby-lang.org/