我正在尝试构造一个正则表达式,它将匹配任何包含字符串插值的Ruby字符串,例如:
"This will contain my #{string}"
我想出了:
/".*#{.*}.*"/
但#{}
被解释为插值。我如何从字面上表达#{}
?
答案 0 :(得分:0)
在分配字符串时可以使用单引号来避免插值并按字面表达#{}
:
my_template = 'This will contain my #{string}'
# => "This will contain my \#{string}"
或者你可以使用双引号并用斜杠转义#符号(如上面语句的返回值所示)。
还有另一个interpolation technique described here可能会有所帮助:
greeting = 'hello %s, my name is %s!'
interpolated = greeting % ['Mike', 'John']
# => "hello Mike, my name is John!"
然后你可以用你的正则表达式检测%s
,但仍然能够轻松地插入&使用字符串作为模板。
答案 1 :(得分:0)
#\{([^}]*)\}
**要更好地查看图像,只需右键单击图像并在新窗口中选择视图
此正则表达式将执行以下操作:
#{....}
结构现场演示
https://regex101.com/r/vR6mU9/1
示例文字
This will contain my #{string}
样本匹配
MATCH 1
Capture group 0: #{string}
Capture group 1: `string`
NODE EXPLANATION
----------------------------------------------------------------------
# '#'
----------------------------------------------------------------------
\{ '{'
----------------------------------------------------------------------
( group and capture to \1:
----------------------------------------------------------------------
[^}]* any character except: '}' (0 or more
times (matching the most amount
possible))
----------------------------------------------------------------------
) end of \1
----------------------------------------------------------------------
\} '}'
----------------------------------------------------------------------