のようなテキストを扱うためにRUBYの正規表現を使用しています。
${1:aaa|bbbb}
${233:aaa | bbbb | ccc ccccc }
${34: aaa | bbbb | cccccccc |d}
${343: aaa | bbbb | cccccccc |dddddd ddddddddd}
${3443:a aa|bbbb|cccccccc|d}
${353:aa a| b b b b | c c c c c c c c | dddddd}
各パイプライン間のトリミングされたテキストを取得したい。たとえば、上の例の最初の行では、結果aaaとbbbbを取得したいのですが、2 行目ではaaaとbbbbとccc ccccc が必要です。これで、正規表現の一部と、それをテストするための Ruby コードの一部を作成しました。
array = "${33:aaa|bbbb|cccccccc}".scan(/\$\{\s*(\d+)\s*:(\s*[^\|]+\s*)(?:\|(\s*[^\|]+\s*))+\}/)
puts array
今私の問題は、(?:\|(\s*[^\|]+\s*))+
パーツが複数のグループを作成できないことです。各行に必要なテキストの数が可変であるため、この問題を解決する方法がわかりません。誰でも助けることができますか?