Ruby中带括号和匹配项的正则表达式

Ruby中带括号和匹配项的正则表达式,ruby,Ruby,红宝石色 x = "this is a test".match(/(\w+) (\w+)/) puts x[0], x[1], x[2] 为什么是输出 this is this is 这里没有什么特别的事。你有模式吗 (\w+) (\w+) 即用空格隔开的两个单词。这将是“在您的示例中是”(因为我们从字符串的开头开始查找匹配项)。在您的示例中,完全匹配进入返回值的第0个元素x[0] 现在括号捕捉匹配项。第一个左括号从第一个单词开始,即“this”,因此该值进入x[1]。第二个左括号开始一

红宝石色

x = "this is a test".match(/(\w+) (\w+)/)
puts x[0], x[1], x[2]
为什么是输出

this is
this 
is

这里没有什么特别的事。你有模式吗

(\w+) (\w+)
即用空格隔开的两个单词。这将是
“在您的示例中是”
(因为我们从字符串的开头开始查找匹配项)。在您的示例中,完全匹配进入返回值的第0个元素
x[0]

现在括号捕捉匹配项。第一个左括号从第一个单词开始,即
“this”
,因此该值进入
x[1]
。第二个左括号开始一个组,该组匹配单词
“is”
,它将被捕获到
x[2]


再说一次,没什么特别的。这就是正则表达式匹配和分组在许多语言中的工作方式。

您希望得到什么?我要补充的是,如果询问者希望得到多个匹配,他应该使用
x=“这是一个测试”。扫描(/(\w+)(\w+)/)
,而不是在一个匹配后停止,将查找字符串中的每个匹配项并返回一个数组。