这个正则表达式在做什么? match = /^plus_([0-9] +)$ / .match(m.to_s)

时间:2010-11-10 15:11:47

标签: ruby regex

这个RUBY正则表达式在做什么:

match = /^plus_([0-9]+)$/.match(m.to_s)

似乎匹配'plus_'然后是数字。

但是.match(m.to_s)部分在做什么?它链接到自己?我不明白。

对不起它的Ruby。

3 个答案:

答案 0 :(得分:2)

Calling .match(s) on a regex runs the regex against s and returns a MatchData objectm.to_s只是表示“调用to_s的{​​{1}}方法”(即将其转换为字符串)。

答案 1 :(得分:1)

哈哈,好编辑!我认为这是Ruby的开头 - 我的回答仍然存在。

你对正则表达式的匹配是正确的。但是,.match()是用于将正则表达式与字符串进行匹配的方法。它返回一个MatchData对象,然后您可以使用该对象查找有关匹配的信息。

因此/^plus_([0-9]+)$/创建一个正则表达式对象,.match(m.to_s)将其与m匹配为一个字符串,并将生成的MatchData存储在匹配中。

请参阅the Regexp documenation

答案 2 :(得分:0)

我从来没有看过ruby,但根据其他人在这里所说的,这似乎是调用刚刚定义的正则表达式的“匹配”方法,而不是字符串“m”。

因此正则表达式本身变成一个“对象”,调用方法“匹配”,参数是(m.to_s)的结果,它只是一个字符串。然后将“match()”方法的结果返回到名为“match”的变量中。

我认为方法调用与返回变量同名的事实是让这看起来很奇怪。

现在这可能100%错了,因为我从未看过红宝石,但根据别人的说法,这就是它的样子。