正規表現の$文字

正規表現の$文字

を使用すると、$前の文字が$文字列の末尾に表示される必要があることがわかります。

aしかし、変数が整数の場合、以下に提供されるテストの違いはわかりません。

  1. [[ a =~ -?[0-9]+ ]]
  2. [[ a =~ ^-?[0-9]+$ ]]

彼らは同じですか?

ベストアンサー1

いいえ、表現が[0-9]+異なります[0-9]+$。最初は1つ以上の数字と一致します。どの場所でも文字列では、後者は次のようになります。ただ1つ以上の数値シーケンスと一致終わりひも。説明のために、このスクリプトを使用して最初の引数に対して式をテストします。

#!/bin/bash
a=$1

if [[ $a =~ -?[0-9]+ ]]; then
   echo "match to first expression"
else
   echo "no match to first expression"
fi

if [[ $a =~ ^-?[0-9]+$ ]]; then
   echo "match to second expression"
else
   echo "no match to second expression"
fi

結果は次のとおりです。

$ ./test.sh 12345
match to first expression
match to second expression
$ ./test.sh 12345AA
match to first expression
no match to second expression

おすすめ記事