0

我需要检索括号之间的子字符串(不包括括号):

我尝试了以下操作,但它返回了括号之间的值和括号。我想排除括号。

 a= "testing (EMI:30384)"
 a[/\(.*?\)/]   ***returns (EMI:30384)

非常感谢您的帮助

4

3 回答 3

1

()捕获之间

\(\)逃脱()

\((.*)\)  

将匹配 EMI:30384

在此处输入图像描述

irb(main):005:0> a= "testing (EMI:30384)"
=> "testing (EMI:30384)"
irb(main):006:0> p a.match(/\((.*)\)/)[1]
"EMI:30384"
于 2012-10-01T14:36:27.293 回答
1

您需要在表达式中使用括号返回匹配组,使用\1. 更多解释在这里http://www.railsrocket.com/regular-expressions-in-ruby-and-rails

str = "testing (EMI:30384)"
ptrn = "/\((.*?)\)/"
str.gsub(ptrn, "\1")
于 2012-10-01T14:37:12.290 回答
1

作为捕获组的替代方法,您可以使用向后看和向前看,但对于您的用例a[/(?<=\().*(?=\))/]给出的确切信息来说,这可能太复杂了EMI:30384

于 2012-10-01T14:44:06.927 回答