不熟悉错误消息中的正则表达式匹配符号



我正在编写以下Ruby Challenge GIST LINK

我的问题是,我如何阅读我的错误信息的部分(下面)之后"得到:",以使改变我的正则表达式或#GSUB表达式?

练习:打印一个乘法表

实现一个名为times_table的方法,该方法接受一个整数作为输入,并打印出一个包含该行数的乘法表。

数字可以用空格或制表符分隔,但每一行必须在新行上。这意味着如果列不对齐也没关系。

例如,times_table(5)应该在屏幕上打印以下内容:

1   2   3   4   5
2   4   6   8  10   
3   6   9  12  15   
4   8  12  16  20   
5  10  15  20  25

同样,您不需要担心列之间的间距。练习的重点是理解逻辑,而不是掌握格式。数字之间应该至少有一个空格/制表符,否则它看起来就不像乘法表了!

我已经编写了下面的代码,虽然不是很漂亮,但足以打印出一个乘法表。我认为这将满足练习的条件。

我的代码
def times_table(rows)
  return "Argument must be a positive integer" unless rows.is_a?(Integer) && rows > 0 
  array_of_arrays = []
  base_array = (1..rows).to_a
  counter = 1
  1.upto(rows){
    temp_array = base_array.map.with_index { |x,i| x *= counter}
        array_of_arrays << temp_array
        counter +=1     
    }
nested_array_string = array_of_arrays.to_s
nested_array_string.gsub!(/(])/, "n")
nested_array_string.gsub!(/([[)|(, )/, " ")
nested_array_string.gsub!(/([)/, "")
nested_array_string.gsub!(/(^ )|(nz)/, "")
# nested_array_string.gsub!(/(nz)/, "")
end
puts times_table(1)

然而,一旦我提交挑战,我收到以下错误消息:

我的问题是,我如何阅读我的错误信息的部分后"得到:",以使改变我的正则表达式或#GSUB表达式?

我找不到"@@ -1,2 +1,2 @@"代表什么的答案。我假设(危险)最后的"/+"表示匹配字符串值中的一个或多个空白的正则表达式。

错误消息
Error!
times_table correctly prints a 1x1 times table
expected: /1s*$/ got: "" (using =~) Diff: @@ -1,2 +1,2 @@ -/1s*$/ +""
Error!
times_table correctly prints a 5x5 times table
expected: /1[ t]+2[ t]+3[ t]+4[ t]+5s*n2[ t]+4[ t]+6[ t]+8[ t]+10s*n3[ t]+6[ t]+9[ t]+12[ t]+15s*n4[ t]+8[ t]+12[ t]+16[ t]+20s*n5[ t]+10[ t]+15[ t]+20[ t]+25s*$/m got: "" (using =~) Diff: @@ -1,2 +1,2 @@ -/1[ t]+2[ t]+3[ t]+4[ t]+5s*n2[ t]+4[ t]+6[ t]+8[ t]+10s*n3[ t]+6[ t]+9[ t]+12[ t]+15s*n4[ t]+8[ t]+12[ t]+16[ t]+20s*n5[ t]+10[ t]+15[ t]+20[ t]+25s*$/m +""

注意:这是我的第二个StackOverflow问题,所以如果有更多的信息或更好的格式,我可以提供,请让我知道。:)

提前感谢。

一些技术人员使用正则表达式。有些规范也是如此,比如w3c XML规范。
这是一种告诉你他们期望的可接受的数据格式的方式,如果它
我们正在用正则表达式解析。

在这种情况下,它看起来像是在告诉你传递的字符串的形式
他们的验证器不匹配他们的正则表达式- 后面的东西期望

他们得到的我猜,是匹配的结果,即"" ??

不知道,但在我看来就是这样。
所以,猜测提交的字符串不匹配。
你是否在数字之间加了空格,并在末尾加了换行符?

 expected: /1[ t]+2[ t]+3[ t]+4[ t]+5s*n2[ t]+4[ t]+6[ t]+8[ t]+10s*n3[ t]+6[ t]+9[ t]+12[ t]+15s*n4[ t]+8[ t]+12[ t]+16[ t]+20s*n5[ t]+10[ t]+15[ t]+20[ t]+25s*$/m
 got: "" 

最新更新