「いくつかの単語、いくつかの他の単語(括弧内の単語)」という文字列があります
結果として「いくつかの単語、いくつかの他の単語」文字列を取得するために、角括弧内の単語も角括弧で完全に削除するにはどうすればよいですか?
私は正規表現の初心者ですが、それらが機能することを学ぶことを約束します)
助けてくれてありがとう!
これを試して:
# 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 "
"*" の貪欲さのため、括弧のペアが 2 つ以上ある場合、その中のすべてが削除されます。
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 "
括弧のグループ間のテキストはそのまま残します。
文字列#[] :
>> "Some words, some other words (words in brackets)"[/(.*)\(/, 1]
#=> "Some words, some other words "
正規表現は(.*)
、最初の開き括弧の前のすべてをグループ化することを意味\(
し、引数1
は最初のグループを取ることを意味します。
閉じ括弧も一致させる必要がある場合は を使用できますが、文字列に括弧のいずれも含まれていない場合/(.*)\(.*\)/
は返されます。nil
/(.*)(\(.*\))?/
括弧を含まない文字列にも一致します。