3

Ruby on Railsアプリで正規表現を使用して、特定の文字列を検索し、角括弧の開始と終了のインスタンス([と])を見つけて、2つの間のコンテンツを選択しようとしています。

例えば:

Lorem ipsum [dolor sit] amet...

この文字列では、結果は次のようになります。[dolor sit]

rubular を少しいじってみたところ、これは多かれ少なかれ私が望むことをすることがわかりました

/\[.*?\]/

私の質問は、括弧自体を選択せず​​に、2 つの角括弧内のすべてを一致させるにはどうすればよいですか? また、それらを実際に Ruby スクリプトに統合するにはどうすればよいですか?

正規表現は私にとってまったく新しい分野なので、皆さんが提供できる助けがあれば大歓迎です:)

4

3 に答える 3

4

正規表現の複数のキャプチャを収集するのはString#scanの仕事です

>> s="Lorem ipsum [dolor sit] [amet] ..."
=> "Lorem ipsum [dolor sit] [amet] ..."
>> s.scan(/\[([^\]]*)\]/).flatten
=> ["dolor sit", "amet"]
于 2012-05-02T21:53:45.420 に答える
2

あなたは使用する必要がありますString#scan

"Hi [there] how are [you]?".scan(/\[.*?\]/)
 => ["[there]", "[you]"] 

このメソッドは文字列全体を繰り返し、すべての一致を返します。

于 2012-05-02T21:58:27.120 に答える
1

内部で抽出する入力の部分に対応する正規表現の部分をラップできます()

str = "Lorem ipsum [dolor sit] amet....".match(/\[(.*?)\]/)
# str --> #<MatchData "[dolor sit]" 1:"dolor sit"> 
str[1] # Will give you 'dolor sit'

グローバル変数を介して一致の結果にアクセスすることもできることに注意してください: $1(一般的$iに whereiは一致する単語のインデックスを表します)。

于 2012-05-02T21:13:20.510 に答える