我有一个正则表达式卡在我.gitignore
类似于:
(Big|Small)(State|City)-[0-9]*\.csv
它没有用,所以我对RegexLab.NET进行了测试。
然后,我找到了gitignore手册页,这使我了解到gitignore不使用正则表达式,而是使用fnmatch(3)。
但是,fnmatch它似乎没有等效的捕获组。这可行吗?还是需要将其分为三行?
我有一个正则表达式卡在我.gitignore
类似于:
(Big|Small)(State|City)-[0-9]*\.csv
它没有用,所以我对RegexLab.NET进行了测试。
然后,我找到了gitignore手册页,这使我了解到gitignore不使用正则表达式,而是使用fnmatch(3)。
但是,fnmatch它似乎没有等效的捕获组。这可行吗?还是需要将其分为三行?
Answers:
无法使用gitignore支持的模式来表达此正则表达式。问题不是缺少捕获组(实际上,您不是在使用捕获组),而是缺少|
操作员。您需要将其分为四行。
BigState-[0-9]*.csv
SmallState-[0-9]*.csv
BigCity-[0-9]*.csv
SmallCity-[0-9]*.csv
注意,模式匹配例如BigState-4foo.csv
,因为*
匹配任何字符序列。除非您只愿意匹配固定数量的数字,否则您无法使用全局模式做得更好。