Wie kann ich eine beliebige Reihe von durch Kommas getrennten Zwei-Buchstaben-Sprachcodes rechts von einem Titel erneut abgleichen (entfernen)? [Duplikat]

Dec 01 2020

Ich habe eine Reihe von Zeichenfolgen wie:

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

Das heißt, ein Titel eines Produkts, gefolgt von (manchmal) einer Liste eines oder mehrerer Sprachcodes in Klammern.

Ich habe wirklich Mühe, einen (PCRE) Regexp zu entwickeln, um diese sicher von den Saiten zu entfernen. Das heißt, es ist unwahrscheinlich, dass die Titel berührt werden.

Ich weiß, dass ([A-Z]{1}[a-z]{1})das irgendwo involviert sein muss, um mit einem einzelnen Sprachcode wie "It" oder "De" übereinzustimmen, aber wie ich mit der Möglichkeit einer beliebigen Anzahl solcher in einer Reihe umgehen soll, mit Kommas zwischen oder ohne Komma (wenn es nur so ist) eins), ist jenseits meiner regulären Ausdrucksfähigkeiten.

Ich wünschte wirklich, sie hätten eine Art eindeutiges Trennzeichen zwischen dem Titelteil und dem "Metadaten" -Teil der Dateinamen verwendet ... Dann müsste ich nicht all diese manuelle Trial-and-Error-Entfernung durchführen. Aber sie haben es nicht getan.

Antworten

MonkeyZeus Dec 01 2020 at 02:29

So etwas würde es tun:

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

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

wp78de Dec 01 2020 at 02:33

Versuchen Sie es so:

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

Online-Demo