我遇到了这段代码:
erb = "#coding:UTF-8 _erbout = ''; _erbout.concat ..." # string is cut
erb[/\A(#coding[:=].*\r?\n)/, 1]
我知道正则表达式是如何工作的,但我对数组表示法感到困惑。在[]
中放置正则表达式是什么意思,第二个参数1
是什么意思?
答案 0 :(得分:3)
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+)
答案 1 :(得分:2)
括号是String的方法。见http://www.ruby-doc.org/core/classes/String.html:
如果提供了Regexp,则匹配 str的一部分返回。如果一个 数字或名称参数跟随 正则表达式,该组件 而是返回MatchData。如果 给出一个String,该字符串是 如果它出现在str中则返回同时 如果没有,则返回nil 匹配。
1 表示返回括号内与模式匹配的内容。