Ruby :获取括号之间的值(没有那些括号)
Ruby : get value between parenthesis (without those parenthesis)
我有 "untitled"
、"untitled(1)"
或 "untitled(2)"
这样的字符串。
如果有的话,我想得到括号之间的最后一个整数值。到目前为止,我尝试了很多正则表达式,对我来说有意义的(我是正则表达式的新手)看起来像这样:
number= string[/\([0-9]+\)/]
number= string[/\(([0-9]+)\)/]
但它仍然是 returns 带括号的值。
如果没有左右括号,得到一个空字符串(或nil
)会很好。像 "untitled($)"
这样的情况,获取 '$'
字符或 nil
或空字符串就可以了。对于 "untitled(3) animal(4)"
,我想得到 4
。
我一直在寻找很多关于如何做到这一点的话题,但它似乎从来没有奏效......我在这里错过了什么?
当您使用 Regex 作为 String#[]
的参数时,您可以选择传入捕获组的索引以提取该组。
If a Regexp is supplied, the matching portion of the string is returned. If a capture follows the regular expression, which may be a capture group index or name, follows the regular expression that component of the MatchData is returned instead.
string = "untitled(1)"
number = string[/\(([0-9]+)\)/, 1]
puts number
#=> 1
/(?<=\()\w+(?=\)$)/
匹配括号内的一个或多个单词字符(字母、数字、下划线),就在行尾之前:
words = %w[
untitled
untitled(1)
untitled(2)
untitled(foo)
unti(tle)d
]
p words.map { |word| word[/(?<=\()\w+(?=\)$)/] }
# => [nil, "1", "2", "foo", nil]
我有 "untitled"
、"untitled(1)"
或 "untitled(2)"
这样的字符串。
如果有的话,我想得到括号之间的最后一个整数值。到目前为止,我尝试了很多正则表达式,对我来说有意义的(我是正则表达式的新手)看起来像这样:
number= string[/\([0-9]+\)/]
number= string[/\(([0-9]+)\)/]
但它仍然是 returns 带括号的值。
如果没有左右括号,得到一个空字符串(或nil
)会很好。像 "untitled($)"
这样的情况,获取 '$'
字符或 nil
或空字符串就可以了。对于 "untitled(3) animal(4)"
,我想得到 4
。
我一直在寻找很多关于如何做到这一点的话题,但它似乎从来没有奏效......我在这里错过了什么?
当您使用 Regex 作为 String#[]
的参数时,您可以选择传入捕获组的索引以提取该组。
If a Regexp is supplied, the matching portion of the string is returned. If a capture follows the regular expression, which may be a capture group index or name, follows the regular expression that component of the MatchData is returned instead.
string = "untitled(1)"
number = string[/\(([0-9]+)\)/, 1]
puts number
#=> 1
/(?<=\()\w+(?=\)$)/
匹配括号内的一个或多个单词字符(字母、数字、下划线),就在行尾之前:
words = %w[
untitled
untitled(1)
untitled(2)
untitled(foo)
unti(tle)d
]
p words.map { |word| word[/(?<=\()\w+(?=\)$)/] }
# => [nil, "1", "2", "foo", nil]