Ruby 扫描/匹配不正确的输入错误消息

Ruby 扫描/匹配不正确的输入错误消息,ruby,string,Ruby,String,我试图计算用户的正确输入。输入如下所示: m = "<ex=1>test xxxx <ex=1>test xxxxx test <ex=1>" 我相信它可以写得更好,因为我的写作方式,我想,是容易出错的。如何确保找到所有错误并向用户显示?您可以使用: 我们扫描字符串,查找后面是否有test,反之亦然。此外,我们抓取最多4个违反规则的字符,以获得更具描述性的消息 ex_test_size = m.scan(/<ex=1>test/).size #

我试图计算用户的正确输入。输入如下所示:

m = "<ex=1>test xxxx <ex=1>test xxxxx test <ex=1>"
我相信它可以写得更好,因为我的写作方式,我想,是容易出错的。如何确保找到所有错误并向用户显示?

您可以使用:

我们扫描字符串,查找后面是否有test,反之亦然。此外,我们抓取最多4个违反规则的字符,以获得更具描述性的消息

ex_test_size = m.scan(/<ex=1>test/).size  # => 2
test_size = m.scan(/test/).size  # => 3
ex_size = m.scan(/<ex=1>/).size  # => 3

puts "lack of tags(<ex=1>)" if ex_test_size < ex_size
puts "Lack of the word(test)" if ex_test_size < test_size
#⇒ ["xxx test", "<ex=1>"]
m.scan(/<ex=1>(?!test).{,4}|.{,4}(?<!<ex=1>)test/).map do |msg|
  "<ex=1>test expected, #{msg} got"
end.join(', ')