我有一個字符串「一些詞,一些其他詞(括號中的單詞)」如何使用Ruby從字符串中刪除括號內的所有符號?
我怎樣才能完全刪除方括號中的括號,以得到「有些詞,一些其他詞」字符串作爲結果?
我對正則表達式新手,但我發誓要學會他們的作品)
感謝幫助!第一開括號\(
前組的一切(.*)
,和參數1
表示:
我有一個字符串「一些詞,一些其他詞(括號中的單詞)」如何使用Ruby從字符串中刪除括號內的所有符號?
我怎樣才能完全刪除方括號中的括號,以得到「有些詞,一些其他詞」字符串作爲結果?
我對正則表達式新手,但我發誓要學會他們的作品)
感謝幫助!第一開括號\(
前組的一切(.*)
,和參數1
表示:
試試這個:
# irb
irb(main):001:0> x = "Some words, some other words (words in brackets)"
=> "Some words, some other words (words in brackets)"
irb(main):002:0> x.gsub(/\(.*?\)/, '')
=> "Some words, some other words "
>> "Some words, some other words (words in brackets)"[/(.*)\(/, 1]
#=> "Some words, some other words "
的正則表達式是指拍攝第一組。
如果您還需要匹配閉合括號,則可以使用/(.*)\(.*\)/
,但如果字符串不包含括號中的一個,則將返回nil
。
/(.*)(\(.*\))?/
還匹配不包含括號的字符串。
因爲「*」如果不是對括號一切之內將被刪除的greedyness的:
s = "Some words, some other words (words in brackets) some text and more (text in brackets)"
=> "Some words, some other words (words in brackets) some text and more (text in brackets)"
ruby-1.9.2-p290 :007 > s.gsub(/\(.*\)/, '')
=> "Some words, some other words "
一個更穩定的解決方案是:
/\(.*?\)/
ruby-1.9.2-p290 :008 > s.gsub(/\(.*?\)/, '')
=> "Some words, some other words some text and more "
離開方括號組之間的文本完好無損。
酷!很感謝! – Alve
這個正則表達式有一個缺陷,因爲如果有多對括號,它會刪除大部分字符串。 –
@Daandi可以通過使用Regex'/\(.*?\)/'來緩解這個問題,它會告訴它停止匹配它碰到第一個括號的瞬間。對於嵌套括號來說,它會變得更加複雜,但如果發生這種情況,最好開始逐字符分析。它可以用遞歸正則表達式來完成,但它很棘手。我回過頭問了一個關於它的問題:http://stackoverflow.com/q/9756884/303940 – KChaloux