PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (JavaScript) - Javascript Regex



darkness
13.12.2016, 15:47
Tach,

suche mal Hilfe bei einer Regex in Javascript...

Ich habe einen String


(PRE) (MP3) (Dj_Orion-Dj_Orion_XmiX_The_Second_Level-(YleX)-SBD-07-29-2016-COS_INT)

Und benötige Dj_Orion-Dj_Orion_XmiX_The_Second_Level-(YleX)-SBD-07-29-2016-COS_INT


var regex = /\((.*)\)/gm;

console.log(text.match(regex));

Hab es damit und anders probiert erhalte aber nur null zurück.

Im Regex Tester ging die Regex mit dem U Modifikator

Danke

Nimbus
13.12.2016, 16:44
var regex = /\((.*?)\)/gm;
Du brauchst das Fragezeichen, denn sonst ist dein RegEx zu gierig und matcht so

(PRE) (MP3) (Dj_Orion-Dj_Orion_XmiX_The_Second_Level-(YleX)-SBD-07-29-2016-COS_INT)

1stAid
13.12.2016, 21:29
Das trifft??
kann ich mir gerade schwer vorstellen.
allein weil der / nicht escaped ist?...
Auch das multiline macht erstmal keinen Sinn.
Du solltest ev schildern aus welchem text du was filtern willst ...
\((.*?)) würde dir den Inhalt zwischen der ersten Klammer liefern ..
Multiline macht nur Sinn wenn du nach Zeilenumbrüchen suchst oder diese beachtet werden sollen ..

Falls ich mich täusche und alles nach Wunsch ist, schönen Abend :)

darkness
13.12.2016, 22:10
Kein Plan ich bin im Pre CHan gebannt.

Ich bekomme per Node IRC IRC Channel Nachrichten. Und aus dem Message String will ich den Release Namen besorgen.

lg

1stAid
13.12.2016, 23:31
Wenn du nicht ein paar der typischen,kompletten Texte postest kann ich dir nicht helfen. Da regex ja auch den kompletten string durchucht..

Beispiel :
(?<=\(PRE\) \(MP3\) \()Dj_Orion-Dj_Orion_XmiX_The_Second_Level-\(YleX\)-SBD-07-29-2016-COS_INT(?=\))
gibt dein gewünschtes Ergebnis aus. Aber trifft halt nur genau eine Vorgabe und nichts anderes..
https://regex101.com/r/p9xuTH/1
Das willst du aber wahrscheinlich nicht.. Deswegen braucht man ein gleiches Schema des ganzen Textes........

darkness
13.12.2016, 23:34
Ähm


(PRE) (MP3) (Dj_Orion-Dj_Orion_XmiX_The_Second_Level-(YleX)-SBD-07-29-2016-COS_INT)

Genau das ist das was ich bekomme und ich will nun Dj_Orion-Dj_Orion_XmiX_The_Second_Level-(YleX)-SBD-07-29-2016-COS_INT haben. Dj_Orion-Dj_Orion_XmiX_The_Second_Level-(YleX)-SBD-07-29-2016-COS_INT ändert sich natürlich.

Es ist wie gesagt ein Release Info Channel und ich muss auf Release Meldungen reagieren.

Und um dir deinen Wunsch zu erfüllen


<TheAnnouncer>(PRE) (TV-X264) (The.Carrie.Diaries.S01E08.FRENCH.720p.HDTV.x264-SH0W)
<TheAnnouncer>(PRE) (MP3) (Dan_Alex-Freedom-DD018-WEB-2016-PITY)
<TheAnnouncer>(PRE) (MP3) (Captain_Monkey-Liquid_Soul-CAT91666-WEB-2016-PITY)
- Providence joined
<TheAnnouncer>(PRE) (MP3) (Alexandr_Novikov-Mystic-KMT007-WEB-2016-PITY)
<TheAnnouncer>(PRE) (MP3) (Tommy_Urbanski-Just_Press_Play-WEB-2016-PITY)
- myfriends1 joined
<TheAnnouncer>(PRE) (TV-X264) (Bubuki.Buranki.Hoshi.no.Kyojin.E11.SUBFRENCH.720p .HDTV.x264-AMB3R)
<TheAnnouncer>(PRE) (TV-XVID) (Bubuki.Buranki.Hoshi.no.Kyojin.E11.SUBFRENCH.HDTV .x264-AMB3R)
<TheAnnouncer>(PRE) (TV-X264) (De.Mannen.Van.Dokter.Anne.S01E02.DUTCH.1080p.HDTV .x264-DiFFERENT)
<TheAnnouncer>(PRE) (MP3) (XLS-Mind_Expansion-ERROR015-WEB-2016-PITY)

Ich muss aber nur ne Regex auf die Lines anwenden und zwar auf eine Line die so aussieht (PRE) (MP3) (XLS-Mind_Expansion-ERROR015-WEB-2016-PITY)[

1stAid
13.12.2016, 23:54
https://regex101.com/r/p9xuTH/2
Gruß

edit :
https://regex101.com/r/p9xuTH/3
ist besser..

Nimbus
14.12.2016, 16:51
Das trifft??
Jein... hab vergessen, dass MP3s gerne mal Klammern im Releasetitel haben. Daher matcht mein RegEx natürlich nur "(Dj_Orion-Dj_Orion_XmiX_The_Second_Level-(YleX)"


allein weil der / nicht escaped ist?...
Die / sind dazu da um das Pattern von den Modifiers zu trennen (http://www.w3schools.com/jsref/jsref_obj_regexp.asp).

Die Flags sind in der Tat unsinnig gesetzt. Um es einfach zu halten hatte ich den RegEx aus dem Startpost nur von dem offensichtlichen Denkfehler (der gierige Stern) befreit. Hab dann leider meinen eigenen Denkfehler total übersehen.

Bin mir jetzt nicht sicher, ob das Absicht ist, aber der RegEx von 1stAid matcht jetzt nur Releases aus der MP3-Sektion