Apa yang setara dengan pola .gitignore dari regex (Besar | Kecil) (Negara | Kota) - [0-9] * \. Csv


23

Saya memiliki regex yang saya tempel di .gitignoremirip dengan:

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

Itu tidak berhasil jadi saya mengujinya terhadap RegexLab.NET .

Saya kemudian menemukan halaman manual gitignore yang membuat saya mengetahui bahwa gitignore tidak menggunakan regex , melainkan fnmatch (3) .

Namun, tampaknya tidak memiliki yang setara dengan kelompok tangkapan. Apakah ini layak atau apakah saya perlu memecah ini menjadi tiga baris?

Jawaban:


26

Tidak ada cara untuk mengekspresikan ekspresi reguler ini dengan pola yang didukung gitignore. Masalahnya bukan kurangnya kelompok penangkapan (pada kenyataannya, Anda tidak menggunakan kelompok penangkapan seperti itu), masalahnya adalah kurangnya |operator. Anda perlu memecah ini menjadi empat baris.

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

Perhatikan bahwa polanya cocok misalnya BigState-4foo.csv, karena *cocok dengan urutan karakter apa pun. Anda tidak dapat melakukan lebih baik dari ini dengan pola gumpalan, kecuali jika Anda bersedia untuk mencocokkan hanya sejumlah digit.


2
Saya akhirnya melakukan persis apa yang Anda katakan. Juga, terima kasih telah menunjukkan * tidak mengulangi ekspresi sebelumnya, tetapi kartu sementara. Cukup bagus untuk kebutuhan saya, tetapi saya berharap lebih baik.
Justin Dearing
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.