昔から始めるのが一番だと思います。
> 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-f
abcdef
-
文字セットを否定するには、最初の文字が必要です^
。テキストとして含めるには、最初のテキストではないはずです。
クラスが終わると、最初の(または]
最初の文字がクラスを無効にする場合は2番目)、4文字のグループになる可能性がある特別な場合があります。^
[]abc]
a
b
c
]