2012-05-07 12 views
3

"+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$)'

で働いて

を解決しました

+3

はあなたが...別のコマンドは正規表現を期待して使うのですか私たちに語っていない...私はあなたの問題が何であるかわからない原因あなたは、正規表現を使用する方法を投稿してください異なる正規表現の構文。 –

+1

あなたはBash正規表現マッチング演算子 '[[$ string =〜$ pattern]]'や 'grep'を使っていますか? –

+1

複雑な見た目の関数を 'if [[$ 1 =〜^ [+ - ]?[0-9] + $]]のようなものに置き換えないのはなぜですか? [[$ 1 =〜^ max $]] || [[$ 1 =〜^ auto $]] ' – RedBaron

答えて

5

[+|-]セレクタは、+|または-のいずれかの1文字を受け入れます。おそらく意味は:[+-]です。

{0,1}の略語は?であり、[0-9][0-9]*は単純に[0-9]+ですが、もちろんどちらも有効です。

とにかく私はVAR = 'AB {0,1}' テストおよびVAR = 'ABは{2}' と、これらは どちら

ab{0,1}aまたはab、数量のいずれかを意味する動作しません。式をグループ化する必要がある場合は、最終的な式(通常は文字)またはセレクタで作業します。

さらにご質問がありましたら

関連する問題