2012-05-14 5 views
15

में स्ट्रिंग वस्तु से कोष्ठक के बीच सामग्री प्राप्त करें मैं इस तरह एक स्ट्रिंग है:रूबी

Hi my name is John (aka Johnator)

कोष्ठक (कोष्ठक समेत) के बीच क्या होता है, यह जानने का सबसे अच्छा तरीका क्या है?

उत्तर

26

आप एक नियमित अभिव्यक्ति के साथ String#[] उपयोग कर सकते हैं:

a = "Hi my name is John (aka Johnator)" 
a[/\(.*?\)/] 
# => "(aka Johnator)" 
+1

कि होना नहीं चाहेंगे स्ट्रिंग # []? –

+0

@ बेरलिंगटन हा! बेशक। फिक्स्ड। अच्छी पकड़। – Cade

+1

आपको हाय के लिए क्या मिलता है "मेरा नाम जॉन है (उर्फ आश्चर्य बल्ले/\\ (*) (*)/\\)" '? – dbenhur

1

इस प्रयास करें:

str1 = "" 
text = "Hi my name is John (aka Johnator)" 

text.sub(/(\(.*?\))/) { str1 = $1 } 

puts str1 

संपादित करें: कोष्ठक छोड़ने के बारे में पढ़ने के लिए नहीं कहा था!

1

Parenthese में चुनिंदा पाठ के लिए उपयोग [^()]*?:

irb(main):019:0> a = "Hi (a(b)c) ((d)" 
=> "Hi (a(b)c) ((d)" 
irb(main):021:0> a.gsub(/\([^()]*?\)/) { |x| p x[1..-2]; "w"} 
"b" 
"d" 
=> "Hi (awc) (w"