用数组符号理解regexp

问题描述

| 我遇到了以下代码段:
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表示返回括号内的模式所匹配的内容。