Mẫu .gitignore tương đương với regex (Lớn | Nhỏ) (Bang | Thành phố) - [0-9] * \. Csv


23

Tôi có một regex tôi bị mắc kẹt .gitignoretương tự như:

(Big|Small)(State|City)-[0-9]*\.csv

Nó không hoạt động nên tôi đã thử nghiệm nó với RegexLab.NET .

Sau đó tôi đã tìm thấy trang người đàn ông gitignore dẫn tôi biết rằng gitignore không sử dụng regexes, mà là fnmatch (3) .

Tuy nhiên, fnmatch dường như không có nhóm tương đương. Điều này có khả thi hay tôi cần chia nó thành ba dòng?

Câu trả lời:


26

Không có cách nào để diễn tả biểu thức chính quy này bằng các mẫu mà gitignore hỗ trợ. Vấn đề không phải là thiếu các nhóm chụp (thực tế, bạn không sử dụng các nhóm chụp như vậy), vấn đề là thiếu một |toán tử. Bạn cần chia điều này thành bốn dòng.

BigState-[0-9]*.csv
SmallState-[0-9]*.csv
BigCity-[0-9]*.csv
SmallCity-[0-9]*.csv

Lưu ý rằng các mẫu khớp với nhau BigState-4foo.csv, ví dụ , vì *khớp với bất kỳ chuỗi ký tự nào. Bạn không thể làm tốt hơn điều này với các mẫu toàn cầu, trừ khi bạn sẵn sàng chỉ khớp một số chữ số cố định.


2
Tôi cuối cùng đã làm chính xác những gì bạn nói. Ngoài ra, cảm ơn bạn đã chỉ ra * không lặp lại biểu thức trước đó, nhưng là một thẻ trong khi. Nó đủ tốt cho nhu cầu của tôi, nhưng tôi đã hy vọng tốt hơn.
Justin thân mến
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.