问题描述
|
我遇到了以下代码段:
erb = \"#coding:UTF-8 _erbout = \'\'; _erbout.concat ...\" # string is cut
erb[/\\A(#coding[:=].*\\r?\\n)/,1]
我知道正则表达式是如何工作的,但是我对数组符号感到困惑。将正则表达式放在ѭ1中是什么意思,第二个参数1
是什么意思?
解决方法
str[regexp]
实际上是String类的方法,您可以在此处找到它http://www.ruby-doc.org/core/classes/String.html#M001128
第二个参数1
将返回与第一个子模式#coding[:=].*\\r?\\n
匹配的文本,这是您更好理解的另一个示例:
\"ab123baab\"[/(\\d+)(ba+).*/,0] # returns \"123baab\",since it is the complete matched text,0 can be omitted also
\"ab123baab\"[/(\\d+)(ba+).*/,1] # returns \"123\",since the first subpattern is (\\d+)
\"ab123baab\"[/(\\d+)(ba+).*/,2] # returns \"baa\",since the second subpattern is (ba+)
,方括号是String的一种方法。参见http://www.ruby-doc.org/core/classes/String.html:
如果提供了Regexp,则匹配
返回str的一部分。如果一个
数字或名称参数紧随
正则表达式,
而是返回MatchData。如果
给定一个字符串,该字符串为
如果发生在str中,则返回。同时
情况下,如果没有则返回nil
比赛。
1表示返回括号内的模式所匹配的内容。