我需要检索括号之间的子串(不包括括号):
我尝试了以下操作,但它返回括号和括号之间的值。我想排除括号。
a= "testing (EMI:30384)"
a[/\(.*?\)/] ***returns (EMI:30384)
非常感谢您的帮助
答案 0 :(得分:1)
()
在
\(
和\)
escape()
\((.*)\)
将匹配EMI:30384
irb(main):005:0> a= "testing (EMI:30384)"
=> "testing (EMI:30384)"
irb(main):006:0> p a.match(/\((.*)\)/)[1]
"EMI:30384"
答案 1 :(得分:1)
您需要在表达式中使用括号返回匹配组,并使用\1
进行访问。这里有更多解释http://www.railsrocket.com/regular-expressions-in-ruby-and-rails
str = "testing (EMI:30384)"
ptrn = "/\((.*?)\)/"
str.gsub(ptrn, "\1")
答案 2 :(得分:1)
作为捕获组的替代方法,您可以使用后视并向前看,但对于您的用例而言可能过于复杂a[/(?<=\().*(?=\))/]
完全给出了EMI:30384