Я упростил примеры. Скажем, у меня есть строка, содержащая код для регулярного выражения. Я хочу, чтобы регулярное выражение соответствовало буквальной точке, и поэтому я хочу, чтобы это было:
\.
Итак, я создаю следующую строку Ruby:
"\\."
Однако, когда я использую ее с Regexp.union для создания моего регулярного выражения, я получаю следующее:
irb(main):017:0> Regexp.union("\\.")
=> /\\\./
Это будет соответствовать косой черте, за которой следует точка, а не просто одной точке. Сравните предыдущий результат с этим:
irb(main):018:0> Regexp.new("\\.")
=> /\./
, который дает желаемое регулярное выражение, но без необходимого объединения.
Не могли бы вы объяснить, почему Ruby действует так и как правильно объединять регулярные выражения? Контекст использования - это импорт строк JSON, описывающих регулярные выражения, и их объединение в Ruby.