echo "$(expr "title: Purple Haze artist: Jimi Hendrix" : 'title:\s*\(.*\?\)\s*artist.*' )"
版画
Purple Haze
?
遅延演算子を使用していますが、末尾に空白があります。
https://regex101.com/でこれをテストしましたが、期待どおりに動作します。bash の違いは何ですか?
echo "$(expr "title: Purple Haze artist: Jimi Hendrix" : 'title:\s*\(.*\?\)\s*artist.*' )"
版画
Purple Haze
?
遅延演算子を使用していますが、末尾に空白があります。
https://regex101.com/でこれをテストしましたが、期待どおりに動作します。bash の違いは何ですか?
あなたはbashの正規表現マッチングを使用していませんexpr
. expr
「<コード>? 遅延演算子」を使用しており、基本的な正規表現のみを実装しています (Linux バージョンでは、空白などの拡張機能がいくつか\s
ありますが、Perl のような遅延演算子は含まれていません)。(さらに言えば、bash も行いません。)
.*
末尾のスペースを含めたくない場合は、スペース以外の文字で終わる必要があることを指定します。
'title:\s*\(.*\S\)\s*artist.*'