使用Ruby的Heredoc语法读取正则表达式

问题描述 投票:0回答:2

在我的测试中,我有一个-更长的多行HTML响应,其中包含日期和时间。我以为可以使用assert_match比较预期结果'\ d {4}-\ d {2}-\ d {2} \ d {2}:\ d {2}'与实际结果'yyyy-mm- dd hh:mm':

assert_match <<END_OF_TEXT, response.body
...
... as at: \d{4}-\d{2}-\d{2} \d{2}:\d{2} UTC
...
END_OF_TEXT

以某种方式,即使使用END_OF_TEXT的各种可能的分隔符,似乎也无法使用此语法输入正则表达式。

ruby heredoc
2个回答
1
投票
以下代码很好用:

p = Regexp.new <<'END_OF_TEXT' ... ... as at: \d{4}-\d{2}-\d{2} \d{2}:\d{2} UTC ... END_OF_TEXT assert_match p, response.body


0
投票
使用正则表达式“扩展”模式,该模式启用Freespacing and Comments

assert_match(/\A [[:digit:]]+ # 1 or more digits before the decimal point (\. # Decimal point [[:digit:]]+ # 1 or more digits after the decimal point )? # The decimal point and following digits are optional \Z/x, '3.14')

© www.soinside.com 2019 - 2024. All rights reserved.