2017-03-17 3 views
0

私のシェルスクリプトでは、正規表現を使用して値を照合しようとしています。私は、1)値が単一のスラッシュで始まり、2)スラッシュで始まるときの2つの条件があります。regexを使ってシェルスクリプトで '/'または '//'で始まる値をどのようにマッチさせるか?

私は以下を使用し、それは私が上記の条件のために働く私のハイブHQLスクリプトで

1)を "^/{1} [^ /] $"

2)「^/{2} "

しかし、私はシェルスクリプトで動作させることができません。シングルスラッシュマッチのコードを以下に示します。

value=/ABCD222 
RGX="^/{1}[^/]$" 
if [[ $value =~ $RGX ]]; then 
    echo success 
else 
    echo failure 
fi 

スラッシュを2回使用してみましたが、機能しません。助けてください。

答えて

0

を:ライン
/{1}

^スタートは一度だけ正確に一度
[^/]スラッシュ以外の任意の文字をスラッシュ
$終了行番号

あなたの正規表現は、exactlyの2文字(nlを除く)の行と一致します。

少なくとも1つのスラッシュで始まるの2文字をすべて一致させるには、単に$を省略します。これを達成する最も簡単な方法は^/[^/]です。 {1}を省略することができますが、デフォルトです。

+0

ありがとうございます!私は今それを考え出した。実際のコードは正規表現が適用された最初の2文字の部分文字列を取ります。 – Djeah

0

あなたは以下のコード試すことができますのは、あなたの正規表現^/{1}[^/]$を調べてみましょう

value='/ABCD222' 
rgx = '^/[^/]*$' 

if [ $value =~ $rgx ]; then 
    echo success 
else 
    echo failure 
fi 
関連する問題