Это можно сделать, используя положительный взгляд за , (?<=\{)
, чтобы потребовать, чтобы совпадению предшествовала левая фигурная скобка, и положительный взгляд , чтобы за матчем сразу же следует правая скобка.
str = "hello {name} is {thing}"
str.scan /(?<=\{).*?(?=\})/
#=> ["name", "thing"]
Если могут быть вложенные скобки и были желательны только строки во внутренних скобках, .*?
необходимо заменить на [^{]*?
:
str = "hello {my {name} is {thing} from} the swamp"
str.scan /(?<=\{)[^{]*?(?=\})/
#=> ["name", "thing"]