Bashでは正規表現が失敗します。

Bashでは正規表現が失敗します。

この正規表現がbashで機能しないのはなぜですか?

 if [[ "$vl" =~ ^ *[{-].* ]]; then

私は空白の数に関係なく一致させたいと思い{ます-

ベストアンサー1

テスト構成に使用されたら、スペースを脱出する必要があります。

if [[ "$vl" =~ ^\ *[{-].* ]]; then

しかし、通常、正規表現を変数に格納する方が良い方法と考えられます。

pattern='^ *[{-].*'
if [[ "$vl" =~ $pattern ]]; then

*また、使用するスペースが1つ以上あることを確認したい場合は、使用されているように0から無限スペースまで一致します。+

また、.*正規表現は行全体と一致する必要はないので、終わりは必要ありません。

pattern='^ +[{-]'

おすすめ記事