对于以下功能:[/(\w+), (\w+)/, 1]整体意味着什么 .(我假设逗号在这里没有特殊含义)./(\w+), (\w+)/,再次匹配单词,逗号,单词和逗号."1"如何将返回的结果分开?什么赋予1特殊意义所以它不再是文字?
def test_parentheses_also_capture_matched_content_by_number
assert_equal "Gray", "Gray, James"[/(\w+), (\w+)/, 1]
assert_equal "James", "Gray, James"[/(\w+), (\w+)/, 2]
end
def test_variables_can_also_be_used_to_access_captures
assert_equal "Gray, James", "Name: Gray, James"[/(\w+), (\w+)/]
assert_equal "Gray", $1
assert_equal "James", $2
end
Run Code Online (Sandbox Code Playgroud)
正则表达式如何将字符串转换为数组?
你正在看这个String#[]的变种:
str[regexp, capture] ? new_str or nil
Run Code Online (Sandbox Code Playgroud)
如果提供了Regexp,则返回字符串的匹配部分.如果a
capture遵循正则表达式(可能是捕获组索引或名称),则遵循正则表达式,而不是返回MatchData的组件.
此正则表达式具有多个匹配组/捕获.第二个参数指定要返回的捕获.而已.