私は文字列 "abc def ghi
"を持っており、CMakeを使って "abc
"と "def ghi
"に分割したいと思います。予想通りCMakeの奇妙な文字列(REGEX REPLACE)の動作
string(REGEX REPLACE "[ ].*" "" NAME ${VAR})
string(REGEX REPLACE "^[^ ]*[ ]" "" OPTIONS ${VAR})
最初の行は、しかし、二番目は、常に最後の指定された引数を出力した作品:私のスクリプトでは、私は2つの行を次のようしています。
echo "abc def ghi" | sed "s/^[^ ]*[ ]//"
出力「DEF GHI」echo "abc def ghi" | sed "s/^[^ ]*[ ]//g"
出力「GHI」
:私は、次のような結果が私のパターンのいずれかの問題があるかどうかを確認するためにsed
を使用して私の問題を再現しようとしましただから私の問題は、string(REGEX REPLACE)
は、最後の操作の出力を次の入力への入力として使用していることです.2番目のsed
コマンドのようです。 string
のドキュメントでは、
REGEX REPLACEは正規表現とできるだけ多く一致させ、一致するものは出力に置き換えます。
しかし、私のケースでは^
オペレータを役に立たないレンダリングする「パイプ出力」動作については言及していません。これは、複数の一致する正規表現のよく知られた動作ですか? ^
を、連続した各入力の開始ではなく、最初の入力の実際の開始だけに一致させることは可能ですか?