[解決済み] bash の if 条件で正規表現を使用する。
2023-03-15 16:23:59
質問
bashでif節に正規表現を使うのは一般的なルールなんでしょうか?
以下はその例です。
$ gg=svm-grid-ch
$ if [[ $gg == *grid* ]] ; then echo $gg; fi
svm-grid-ch
$ if [[ $gg == ^....grid* ]] ; then echo $gg; fi
$ if [[ $gg == ....grid* ]] ; then echo $gg; fi
$ if [[ $gg == s...grid* ]] ; then echo $gg; fi
$
なぜ最後の3つはマッチングに失敗するのでしょうか?
この例だけでなく、できるだけ多くの一般的なルールを教えていただけると幸いです。
どのように解決するのですか?
グロブパターンを使用する場合、クエスチョンマークは1文字、アスタリスクは0文字以上の連続を表します。
if [[ $gg == ????grid* ]] ; then echo $gg; fi
正規表現を使う場合、ドットは1つの文字を表し、アスタリスクは直前の文字の0個以上を表します。つまり、"。
.*
は任意の文字の0個以上を表し、"
a*
"は0個以上の"、".を表します。
[0-9]*
は0桁以上の数字を表します。もう1つ便利なのがプラス記号で、これは直前の文字の1つ以上を表します。つまり、"
[a-z]+
は1つ以上の小文字のアルファ文字を表します(Cロケール、および他のいくつかのロケール)。
if [[ $gg =~ ^....grid.*$ ]] ; then echo $gg; fi
関連
-
[解決済み] 正規表現で変数を使うには?
-
[解決済み] 特定の文字が後にない'単語'を探す
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] 単語を含まない行にマッチする正規表現
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み】Bashでファイル名と拡張子を抽出する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】REエラー:Mac OS Xでの不正なバイトシーケンス
-
[解決済み] Regexオプショングループ
-
[解決済み] 浮動小数点数に対する正規表現
-
[解決済み] URLにセミコロンが含まれていても、有効なのでしょうか?
-
[解決済み] GNU sed の lookahead 正規表現がおかしいのですが?
-
[解決済み] SQLite のクエリで正規表現を使うにはどうしたらいいですか?
-
[解決済み] 正規表現の冒頭の感嘆符と末尾のドル記号は何ですか?
-
[解決済み] regex オプションのワードマッチ
-
[解決済み] awk で gsub を使ってファイル中の ("./") と (".txt") の文字を検索・置換する方法
-
[解決済み] 2つ以上の連続した文字を検索するためのRegEx