什么是 .gitignore 模式等价于正则表达式 (Big|Small)(State|City)-[0-9]*\.csv

Jus*_*ing 33 git regular-expression wildcards patterns

我有一个.gitignore类似于以下内容的正则表达式:

(Big|Small)(State|City)-[0-9]*\.csv
Run Code Online (Sandbox Code Playgroud)

它不起作用,所以我针对RegexLab.NET对其进行了测试。

然后我找到了gitignore手册页,这让我了解到 gitignore 不使用正则表达式,而是使用fnmatch(3)

但是, fnmatch 它似乎没有与捕获组等效的内容。这是可行的还是我需要把它分成三行?

Gil*_*il' 40

没有办法用 gitignore 支持的模式来表达这个正则表达式。问题不在于缺少捕获组(实际上,您没有使用捕获组),问题在于缺少|运算符。你需要把它分成四行。

BigState-[0-9]*.csv
SmallState-[0-9]*.csv
BigCity-[0-9]*.csv
SmallCity-[0-9]*.csv
Run Code Online (Sandbox Code Playgroud)

请注意,模式匹配 eg BigState-4foo.csv,因为*匹配任何字符序列。使用 glob 模式不能做得比这更好,除非您愿意只匹配固定数量的数字。

  • 我最终完全按照你说的去做。另外,感谢您指出 * 没有重复前面的表达式,而是一个 while 卡。它足以满足我的需求,但我希望能做得更好。 (2认同)