2017-09-18 4 views
0

特定のタグの後に特定のパターンで次のコミット時にタグ名を探したい。 私は、コマンド特定のタグの後に特定のパターンで次のコミット時にタグ名を見つける

git describe --match 'alex-[0-9]{4}w[0-9]{2}.(A | B)' --abbrev=0 tag_name 

を使用したが試合は動作しません。 どうすれば一致できますか?

+1

例としませんでした:

したがって、私はあなたが元で\.いうだけより.を望んでいたことを右だと仮定すると? – blueCat

答えて

1

--match操作には、正規表現ではなく、glob patternsが必要です。

幸いにも、この特定のケースでは、正規表現として書いたものもグロブパターンとして表現できます。 (これは他のケースには当てはまりません。)の代わりに:

[0-9]{4} 

(それらの文字の正確4の繰り返しに一致している)、使用:

[0-9][0-9][0-9][0-9] 

が異なると、{2}バリアントのためにこれを繰り返します数。 .は正規表現で改行文字以外の文字と一致するので、?に置き換えてください。この場合は、とにかく文字通りのピリオドを意味すると思われます。その場合は.を使用してください。最後に、拡張RE内の(A|B)(元はスペースを含むべきではない)は、両方の種類のパターンで同じ形式を持つ[AB]に相当します。一致している必要がありますタグの

--match 'alex-[0-9][0-9][0-9][0-9]w[0-9][0-9].[AB]' 
+0

[AB]がAまたはBの場合、どのようにしてTueまたはMonを書くことができますか? @torek – Alex

+0

@Alex:できません。すべての正規表現をglobパターンとして表現できるわけではありません。幸いなことに、 '--match'はそれを繰り返すことができるので、' --match 'と書くことができます。foo- [0-9] [ABC] -Mon' --match 'foo [0-9] [ABC] -Tue'例えば、拡張された 'foo [0-9] [ABC] - (Mon | Tue)と同じ文字列にglob-matchすることができます。 – torek

関連する問題