0

私はフォームの文字列を持っています

s = "something prefix1 value1 prefix2 value2 prefix1 value3 prefix2 value4"

正規表現を使用して値(value1、value2など)を抽出したいと思います。値とプレフィックスのペアはいくつでもかまいません。プレフィックスは2つだけです。値にはスペースが含まれる場合があります。

私は次のようなことを試しました

/((prefix1|prefix2)(.*))+/

最初の。*一致が文字列の残りの部分と一致するため、これは機能しません。

私はルビーで働いています。

前もって感謝します。

4

4 に答える 4

1

分割関数を使用したいように思えます。

tokens = s.split(/\s+/)

これにより、空白で区切られたトークンのリストが表示されます。

ルビークックブックのこのセクションをチェックしてください。

更新:単一の正規表現を使用してそれらを完全に一致させる必要がある場合、これは機能するはずです:

/((\w+)\s+(.*?))+/
于 2012-10-06T07:34:03.993 に答える
0

String#split正規表現で分割できます:

s = "something prefix1 value1 prefix2 value2 prefix1 value3 prefix2 value4"
p s.split(/ prefix1 | prefix2 /) # ["something", "value1", "value2", "value3", "value4"]
于 2012-10-06T11:05:23.183 に答える
0

試す/((prefix1|prefix2)(.*?))+/

疑問符はそれを貪欲ではありません。

于 2012-10-06T07:33:18.157 に答える
0

彼はどんな結果を期待していますか? 接頭辞なしで単に値を抽出したい場合は、これを試してください:

str = "something prefix1 value1 prefix2 value2 prefix1 value3 prefix2 value4"

p str.split.reject { |s| s =~ /prefix/ }

#=> ["something", "value1", "value2", "value3", "value4"]
于 2012-10-06T09:05:45.040 に答える