sedの正規表現文字クラス(例:[abc])の順序は重要ですか?

sedの正規表現文字クラス(例:[abc])の順序は重要ですか?

昔から始めるのが一番だと思います。

> echo "[20-20:10]Something" | sed -r -e 's/^\[[0-9\:\-]+(.*)$/\1/' 
]Something
> echo "[20-20:10]Something" | sed -r -e 's/^\[[0-9\-\:]+(.*)$/\1/' 
-20:10]Something

唯一の違いは、正規表現の文字クラスと文字を置き換えたことです:-もしそうなら、sedの正規表現文字クラスの文字順序は重要ですか?次のような他の正規表現システムでは、私にとって重要ではないようです。https://regex101.com/

Googleはこの動作に関する情報を見つけることができませんが、私のスクリプトの機能を確実に知りたいので、もっと詳しく知りたいです。

ベストアンサー1

いくつかのルールがあります。この場合の重要なことは、これがスコープジョブなので、クラスの内部ではなく話すことができる-ということです。 aをリテラル文字として含めるには、クラスの最後の文字であるのが最も簡単ですが、範囲の最初の文字または最後の文字である可能性があります。a-fabcdef-

文字セットを否定するには、最初の文字が必要です^。テキストとして含めるには、最初のテキストではないはずです。

クラスが終わると、最初の(または]最初の文字がクラスを無効にする場合は2番目)、4文字のグループになる可能性がある特別な場合があります。^[]abc]a b c]

おすすめ記事