Ruby:获取括号之间的值(不带括号)

Ruby:获取括号之间的值(不带括号),ruby,regex,parentheses,Ruby,Regex,Parentheses,我有一些字符串,比如“untitled”,“untitled(1)”或“untitled(2)” 如果有,我想得到括号之间的最后一个整数值。到目前为止,我尝试了很多regex,对我来说有意义的(我是regex新手)如下所示: number=string[/\([0-9]+\)/] number=string[/\([0-9]+)\)/] 但它仍然返回带括号的值 如果没有左括号,那么得到一个空字符串(或nil)就很好了。例如“untitled($)”,获取“$”字符或nil或空字符串就可以了。

我有一些字符串,比如
“untitled”
“untitled(1)”
“untitled(2)”

如果有,我想得到括号之间的最后一个整数值。到目前为止,我尝试了很多regex,对我来说有意义的(我是regex新手)如下所示:

  • number=string[/\([0-9]+\)/]
  • number=string[/\([0-9]+)\)/]
但它仍然返回带括号的值

如果没有左括号,那么得到一个空字符串(或
nil
)就很好了。例如
“untitled($)”
,获取
“$”
字符或
nil
或空字符串就可以了。对于
“无标题(3)动物(4)”
,我想得到
4


我一直在寻找很多关于如何做到这一点的话题,但似乎从来没有工作。。。这里缺少什么?

当使用Regex作为参数时,可以选择传入捕获组的索引以提取该组

如果提供了Regexp,则返回字符串的匹配部分。如果捕获跟随正则表达式(可能是捕获组索引或名称),则会跟随正则表达式而返回MatchData的组件


使用Regex作为参数时,可以选择传入捕获组的索引以提取该组

如果提供了Regexp,则返回字符串的匹配部分。如果捕获跟随正则表达式(可能是捕获组索引或名称),则会跟随正则表达式而返回MatchData的组件


/(?
/(?我认为有理由假设括号可能围绕数字的字符串表示形式(鉴于示例)或不包含右括号的任意字符串(例如,
“($)”
),但我看不到将字符串限制为单词字符的依据。谢谢!它确实起作用了,我将查看文档以准确理解为什么我认为括号可能围绕数字的字符串表示形式(根据示例)或不包含右括号的任意字符串(例如,
”($)是合理的“
),但我看不到将字符串限制为单词字符的依据。谢谢!它确实起作用了,我将查看文档以准确了解字符串
“untitled”
的重要性,或者是任何字符串的替代品(例如,
“cat(9)”
)?您尚未定义“value”。它必须是非负整数(自然数)的字符串表示形式,如您的示例所示,还是可能是负整数(which)?如果字符串是
“untitled”
“帽子里的猫”
“untitled($)”
,或
“untitled(3)animal(4)”,您希望返回什么
?请编辑您的问题,而不是试图在评论中详细说明(这也应该阻止进一步的向下投票)。文字的精确性与代码的精确性同等重要。字符串
“untitled”
重要吗?或者是任何字符串的替代品(例如
“cat(9)”
)?您没有定义“value”。它必须是非负整数(自然数)的字符串表示形式,如您的示例所示,还是可能是负整数(which)?如果字符串是
“untitled”
“帽子里的猫”
“untitled($)”
,或
“untitled(3)animal(4)”,您希望返回什么
?请编辑您的问题,而不是试图在评论中详细说明(这也会阻止进一步的向下投票)。文字的精确性与代码的精确性同样重要。
string = "untitled(1)"
number = string[/\(([0-9]+)\)/, 1]
puts number
#=> 1
words = %w[
    untitled
    untitled(1)
    untitled(2)
    untitled(foo)
    unti(tle)d
]
p words.map { |word| word[/(?<=\()\w+(?=\)$)/] }
# => [nil, "1", "2", "foo", nil]