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 に答える