PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (JavaScript) - Regex Groupname from Releasename



fsxto
04.10.2016, 13:25
Hey :)

Bin gerade verzweifelt auf der Suche nach einem ordentlichen Regex um den Groupname vom Releasenamen zu bekommen.

Nur alles mit lastIndexOf('-') und substring ab der Stelle funktioniert nicht, weil einige Releasenamen auch falsch gepred werden.

Hat da jemand was zur Hand oder muss ich da sehr kreativ rangehen? :o

~fsxto

Nimbus
04.10.2016, 13:32
einige Releasenamen auch falsch gepred werden.
Hast du ein Beispiel, bei dem lastIndexOf nicht funktioniert?
Spontan hätte ich mich nämlich jetzt am letzten Minus orientiert (egal, ob mit oder ohne RegEx)

maz
04.10.2016, 13:38
Naja, die einzige Regel dies in der Szene dazu gibt ist exakt die, dass der group name am Ende mit - angefügt werden muss.
Und soweit ich weiss sind im group name auch keine - erlaubt.
Insofern kann man keinen besseren Regex bauen. Ich würde [^-]+$ verwenden.
Wenn du natürlich auch P2P Rels dabei hast, dann gnade dir Gott, die halten sich längst nicht immer an die Regeln und somit ists dann unmöglich das zu parsen.

In dem Zusammenhang noch meine absolute lieblings Regex Test Seite: https://regex101.com/r/gDSj9Z/1
Dort siehst du einerseits instant den Effekt, was es aber richtig geil macht sind die Farben.
Und für weniger rrfahrene Regexler hat es auch ne super Erklärung.

fsxto
04.10.2016, 13:40
Hab ein paar rausgesucht, aber die waren auch in keiner anderen PreDB zu finden. War bestimmt irgend einen junk den ich ausfiltern muss.

Ansonsten sieht das ganz gut aus mit dem - :)


Ja regex101 benutze ich auch immer :) Haben auch neues Gewand bekommen in den letzten Tagen.

1stAid
04.10.2016, 18:47
Du kannst auch die letzten Buchstaben nehmen, wenn du z.B Releastitel ohne Punkte hast oder mit Leerzeichen usw

$(\w+)

rasko
04.10.2016, 21:51
da mir das auch weiter helfen könnte, hab ich auch eine frage.

wie schaut es denn bei releases die eine version nummer im tag haben aus, bei filmen sicher nicht der fall, aber bei apps und games (updates etc.).

maz
04.10.2016, 21:58
Also du willst die Versionnummer aus dem Titel?

https://regex101.com/r/GsXLhU/2 müsste mit szene konformen Titeln funktionieren

rasko
04.10.2016, 22:04
ach lol ich hab bittl was vercheckt ^^ mein anliegen passt gar nicht zum thema :D. ignoriert mein post einfach...

sry

VTK
04.10.2016, 23:52
Für was für Releases denn? Filme, Musik...?

1stAid
05.10.2016, 06:53
Dein Code unter https://regex101.com/r/GsXLhU/2


[vV]\d+(\.\d+)+

Kann noch gepimt werden

(?<=(\.|\s))[vV]\d+(\.\d+)+\(\.|\s)
wenn man sicherstellen möchte, das vor dem "v" ein Punkt oder Leerzeichen steht und um einen doppelpunkt oder Doppelleerzeichen zu vermeiden.

Gruß

Nimbus
05.10.2016, 08:59
Du kannst auch die letzten Buchstaben nehmen
Das funktioniert z.B. bei MP3-Releases nicht. Dort werden Internal-Releases mit einem "_INT" am Ende des Release-Namens markiert.
Dein RegEx sollte zumindest diesen Fall aber ausreichen (das \w+ nimmt nämlich auch den Underscore mit).

1stAid
05.10.2016, 11:01
Das funktioniert z.B. bei MP3-Releases nicht. Dort werden Internal-Releases mit einem "_INT" am Ende des Release-Namens markiert.
Dein RegEx sollte zumindest diesen Fall aber ausreichen (das \w+ nimmt nämlich auch den Underscore mit).

Auch kein Problem


RegEx:=(\w+(?=\_int$)|(\w+)$)
Titel:=Devolutions.Server.Platinum.v3.2.2.0.Incl.K eyMaker-DVT_int
Ausgabe=DVT
Devolutions.Server.Platinum.v3.2.2.0.Incl.KeyMaker-DVT
Ausgabe=DVT
Titel:=Devolutions.Server_int.Platinum.v3.2.2.0.In cl.KeyMaker-DVT_int
Ausgabe=DVT