私は最近、自分の git ステータスに従って bash プロンプトを設定するスクリプトでこの問題に遭遇しました。これは、式内で一致させたい他のもの (つまり、ハイフン) の配置が原因であることがわかりました。
git status
たとえば、出力の特定の部分、たとえば、それが言う部分を一致させたいと思っていました"Your branch is ahead of 'origin/mybranch' by 1 commit."
これは私の元のパターンでした:
"Your branch is (ahead of|behind) '([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)' by ([0-9]+) commit".
ある日、 を含むブランチを作成した.
ところ、bash プロンプトが正しいものを表示していないことがわかり、式を次のように変更しました。
"Your branch is (ahead of|behind) '([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-.]+)' by ([0-9]+) commit".
うまくいくと思っていましたが、まったく一致しませんでした。
たくさんの投稿を読んだ後、ハイフン ( -
) の配置が原因であることに気付きました。最初の角括弧の直後に配置する必要がありました。そうしないと、範囲として解釈されます (この場合、 の範囲を解釈しようとしましたが_-.
、これは無効であるか、何らかの形で式全体が失敗します。
式を次のように変更すると、機能し始めました。
"Your branch is (ahead of|behind) '([a-zA-Z0-9_-]+)/([-a-zA-Z0-9_.]+)' by ([0-9]+) commit".
つまり、基本的に、ドットとアンパサンドの一致を妨げているのは、あなたの式の他の何か (私のハイフンのようなもの) である可能性があるということです。