Jak dopasować regexp (usunąć) dowolną serię dwuliterowych kodów języka oddzielonych przecinkami po prawej stronie tytułu? [duplikować]

Dec 01 2020

Mam kilka stringów, takich jak:

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
...

Oznacza to, że tytuł produktu, po którym następuje (czasami) lista jednego lub więcej kodów języków w nawiasach.

Naprawdę mam problem z wymyśleniem wyrażenia regularnego (PCRE), aby bezpiecznie usunąć je z łańcuchów w bezpieczny sposób. Oznacza to, że raczej nie dotknie tytułów.

Wiem, że ([A-Z]{1}[a-z]{1})musi to być gdzieś zaangażowane, aby dopasować kod jednego języka, taki jak "It" lub "De", ale jak mam obsłużyć możliwość dowolnej liczby takich w rzędzie, z przecinkami między lub bez przecinków (jeśli to tylko one) przekracza moje umiejętności wyrażeń regularnych.

Naprawdę żałuję, że nie użyli jakiegoś jednoznacznego separatora między częścią tytułową a częścią „metadanych” nazw plików ... Wtedy nie musiałbym wykonywać całej tej ręcznej metody prób i błędów. Ale nie zrobili tego.

Odpowiedzi

MonkeyZeus Dec 01 2020 at 02:29

Coś takiego mogłoby to zrobić:

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

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

wp78de Dec 01 2020 at 02:33

Spróbuj tak:

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

Demo online