田中太郎
zshの正規表現についてまとめます
はじめに
zshで正規表現を使うことができます
例えば以下のように使用します
str="hoge fuga"
if [[ $str =~ "^hoge" ]] then
echo "1:Match"
else
echo "1:Unmatch"
fi
if [[ $str == "^hoge" ]] then
echo "2:Match"
else
echo "2:Unmatch"
fi
# 出力
# 1:Match
# 2:Unmatch
「=~」で正規表現が有効になります
1つ目のif文では正規表現が有効なのでmatchしますが
2つ目のif文でが正規表現が無効なのでunmatchと出ます
また、「=~」では左辺(文字列)に右辺(正規表現)が含まれていれば真を返します
よく使う表現
.:任意の文字とマッチする
str="hoge"
if [[ $str =~ "." ]] then
echo "Match"
fi
+:直前の文字が1回以上続く
*:直前の文字が0回以上続く
?:直前の文字が0 or 1回続く
{n}:直前の文字がn回続く
^:文字列の最初とマッチ
$:文字列の最後とマッチ
\t:タブ
\n:改行
[文字]:括弧内のいずれかの文字とマッチ
str="5"
if [[ $str =~ "[12345]" ]] then
echo "Match"
fi
上記の例では1 or 2 or 3 or 4 or 5 にマッチしたら真となる
他には以下のように使用する
[0-9]:任意の数字
[a-z]:任意の小文字アルファベット
[A-Z]:任意の大文字アルファベット
[^文字]:括弧内いずれかの文字とマッチしない
str="a"
if [[ $str =~ "[^0-9]" ]] then
echo "Match"
fi
上記の例では、任意の数字とマッチしなければ真となる
\:直前の正規表現を文字と認識させる
まとめ
zshの正規表現についてまとめました
コメント