"+99"、 "-82"、 "5"、 "auto"、 "max"のような文字列と一致させようとしています ==自動車とmaxと数字はとか、私は正規表現bash正規表現は「少なくともn回mではない」
var='^([+|-]{0,1}[0-9][0-9]*)|(auto)|(max)$'
を試してみました
記号
なし(整数を言うことができます)が、それはでは、事に失敗した「以上メートルより少なくともn回ではなく」を私のケース{0,1} とにかく私はvar = 'ab {0,1}'とvar = 'ab {2}'をテストしましたが、これらはどちらも動作しません。が、私はこれらのことにより、それが次の問題は、可能性のあるfurherが、私の事を取得できませんでした!()私は#を使用してい
/binに/ bashのバージョン4.2.24(1)
事前に感謝!
EDIT1: 私にはわからないどのようにグループため、この正規表現をしますか?がKaroly Horvathとして提案されました。 私はこのチェック機能をどこかで使用しています。
#!/bin/bash
INTEGER_MAX='^([+-])?[0-9][0-9]*$'
function isNumeric() {
check=`echo $1 | sed "s/\($2\)//"`
if [ -z ${check} ]; then
return 0
else
return 1
fi
}
isNumeric "$1" "$INTEGER_MAX" && echo "passed"
EDIT2は - !それは
[[ $string =~ $pattern ]] && echo "passed"
THX上でテスト
RE='(^([+-])?[0-9]+$)|(^auto$)|(^max$)'
で働いて
を解決しました
はあなたが...別のコマンドは正規表現を期待して使うのですか私たちに語っていない...私はあなたの問題が何であるかわからない原因あなたは、正規表現を使用する方法を投稿してください異なる正規表現の構文。 –
あなたはBash正規表現マッチング演算子 '[[$ string =〜$ pattern]]'や 'grep'を使っていますか? –
複雑な見た目の関数を 'if [[$ 1 =〜^ [+ - ]?[0-9] + $]]のようなものに置き換えないのはなぜですか? [[$ 1 =〜^ max $]] || [[$ 1 =〜^ auto $]] ' – RedBaron