1

「いくつかの単語、いくつかの他の単語(括弧内の単語)」という文字列があります

結果として「いくつかの単語、いくつかの他の単語」文字列を取得するために、角括弧内の単語も角括弧で完全に削除するにはどうすればよいですか?

私は正規表現の初心者ですが、それらが機能することを学ぶことを約束します)

助けてくれてありがとう!

4

3 に答える 3

3

これを試して:

# 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 "
于 2012-11-14T16:03:32.343 に答える
2

"*" の貪欲さのため、括弧のペアが 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 "

括弧のグループ間のテキストはそのまま残します。

于 2012-11-14T17:09:51.823 に答える
0

文字列#[] :

>>  "Some words, some other words (words in brackets)"[/(.*)\(/, 1] 
    #=> "Some words, some other words "

正規表現は(.*)、最初の開き括弧の前のすべてをグループ化することを意味\(し、引数1は最初のグループを取ることを意味します。

閉じ括弧も一致させる必要がある場合は を使用できますが、文字列に括弧のいずれも含まれていない場合/(.*)\(.*\)/は返されます。nil

/(.*)(\(.*\))?/括弧を含まない文字列にも一致します。

于 2012-11-14T16:09:31.597 に答える