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.