Ruby 用于获取括号之间的值的正则表达式
我正试图编写一个正则表达式来获取括号之间的值。我期望一个没有括号的值。例如,假设:Ruby 用于获取括号之间的值的正则表达式,ruby,regex,Ruby,Regex,我正试图编写一个正则表达式来获取括号之间的值。我期望一个没有括号的值。例如,假设: value = "John sinu.s(14)" 我希望得到14 我尝试了以下方法: value[/\(.*?\)/] 但是它给出了结果(14)。请帮助我。尝试使用此正则表达式 /\((.*?)\)/ \(将匹配字符串中的左括号 (.*)创建 \)将与右括号匹配 您可以使用 value[/\((.*?)\)/, 1] 或 使用一个和第二个参数仅提取组值 请注意,\(.*?)也将匹配其中包含(字符的子
value = "John sinu.s(14)"
我希望得到14
我尝试了以下方法:
value[/\(.*?\)/]
但是它给出了结果
(14)
。请帮助我。尝试使用此正则表达式
/\((.*?)\)/
将匹配字符串中的左括号\(
创建(.*)
将与右括号匹配\)
- 您可以使用
value[/\((.*?)\)/, 1]
或
使用一个和第二个参数仅提取组值
请注意,\(.*?)
也将匹配其中包含(
字符的子字符串,第二个选项将仅匹配不包含(
或)
的括号之间的子字符串,因为[^()]
是匹配任何字符的子字符串,但(
和)
看
从:
str[regexp,capture]→ 新建或无
如果提供了
Regexp
,则返回字符串的匹配部分。如果捕获跟随正则表达式(可能是捕获组索引或名称),则跟随正则表达式,则返回匹配数据的组件
如果需要提取多个匹配项,请使用String#scan
:
value = "John sinu.s(14) and Jack(156)"
puts value.scan(/\(([^()]*)\)/)
# => [ 14, 156 ]
请参阅。另一个选项是使用非捕获环视,如下所示
value[/(?<=\().*(?=\))/]
value[/(?您可以使用
/(?<=\\()[^\\)]+/g
/(?您希望提取括号之间的字符串还是使用正则表达式提取?您在问题中指定了后者,但可以想象,您的问题实际上是前者,您假设必须使用正则表达式
如果您只需要该值,而不需要对用于获取该值的方法进行任何限制,那么可以使用and简单地实现
使用value[/\(.*?)/,1]
或者,您可以省去前瞻,而改为更改捕获机制:/(?这是一个积极的回顾,这是您想要的。
/(?<=\\()[^\\)]+/g
s = "John sinu.s(14)"
s[s.index('(')+1 .. s.rindex(')')-1]
#=> "14"