Bagaimana cara mencocokkan regexp (menghapus) rangkaian sembarang kode bahasa dua huruf yang dipisahkan dengan koma, di sebelah kanan judul? [duplikat]

Dec 01 2020

Saya memiliki banyak string seperti:

Super Mario Bros. 8 (En,Fr,De,Es,It)
Donald Duck in Whacky Land (En,Fr,De,Es,Sv)
Toadstool Adventures 3D (En)
Chinaland (En,De)
A title which doesn't have any such thing
...

Yaitu, judul produk diikuti (terkadang) daftar satu atau lebih kode bahasa dalam tanda kurung.

Saya benar-benar berjuang untuk menghasilkan regexp (PCRE) untuk menghapus ini dengan aman dari string dengan cara yang aman. Artinya, sepertinya tidak akan menyentuh judulnya.

Saya tahu itu ([A-Z]{1}[a-z]{1})harus dilibatkan di suatu tempat, untuk mencocokkan satu kode bahasa seperti "It" atau "De", tapi bagaimana saya harus menangani kemungkinan sejumlah seperti itu secara berurutan, dengan koma di antara atau tanpa koma (jika itu hanya satu), berada di luar kemampuan ekspresi reguler saya.

Saya benar-benar berharap mereka telah menggunakan semacam pemisah yang tidak ambigu antara bagian judul dan bagian "metadata" dari nama file ... Maka saya tidak perlu melakukan semua penghapusan coba-coba manual ini. Tapi mereka tidak melakukannya.

Jawaban

MonkeyZeus Dec 01 2020 at 02:29

Sesuatu seperti ini akan melakukannya:

\([A-Z][a-z](?:,[A-Z][a-z])*\)$

https://regex101.com/r/xxNQ8h/1

wp78de Dec 01 2020 at 02:33

Cobalah seperti ini:

\(([A-Z][a-z],?)+\).*$

Demo Online