这个RUBY正则表达式在做什么:
match = /^plus_([0-9]+)$/.match(m.to_s)
似乎匹配'plus_'然后是数字。
但是.match(m.to_s)
部分在做什么?它链接到自己?我不明白。
对不起它的Ruby。
答案 0 :(得分:2)
Calling .match(s)
on a regex runs the regex against s
and returns a MatchData
object。 m.to_s
只是表示“调用to_s
的{{1}}方法”(即将其转换为字符串)。
答案 1 :(得分:1)
你对正则表达式的匹配是正确的。但是,.match()
是用于将正则表达式与字符串进行匹配的方法。它返回一个MatchData对象,然后您可以使用该对象查找有关匹配的信息。
因此/^plus_([0-9]+)$/
创建一个正则表达式对象,.match(m.to_s)
将其与m匹配为一个字符串,并将生成的MatchData存储在匹配中。
答案 2 :(得分:0)
我从来没有看过ruby,但根据其他人在这里所说的,这似乎是调用刚刚定义的正则表达式的“匹配”方法,而不是字符串“m”。
因此正则表达式本身变成一个“对象”,调用方法“匹配”,参数是(m.to_s)的结果,它只是一个字符串。然后将“match()”方法的结果返回到名为“match”的变量中。
我认为方法调用与返回变量同名的事实是让这看起来很奇怪。
现在这可能100%错了,因为我从未看过红宝石,但根据别人的说法,这就是它的样子。