valid
名前があるときに次の正規表現が印刷されるのはなぜですかhdpworker01
?
name=hdpworker01
[[ $name =~ worker[[:digit:]] ]] && echo valid
私がやろうとしているのは、valid
名前が一致した場合にのみ印刷することですworker[0-999]
。
予想結果の例:
- のため
name=worker01
:valid
- 対象
name=hdpworker01
:出力なし
ベストアンサー1
デフォルトでは、正規表現は文字列の先頭または末尾に固定されません。これは、たとえばファイル名のグロービングパターンとは異なります。これは、式が与えられた文字列のどこにでも一致できることを意味します。
式を文字列の先頭に固定するには、次のようにします。
^worker[[:digit:]]
文字列の末尾にさらに固定して1〜3桁の数字を許可するには、次のようにします。
^worker[[:digit:]]{1,3}$
一致したいがworker10
一致しないworker01
(worker003
ゼロパディングのない数字)、次を使用します。
^worker([0-9]|[1-9][0-9]{1,2})$