Regular Expression
Silvan Gehrig
- perl
Hallo,
Benötige einen Regexp, der mir alle /* */ Kommentare aus dem Script-File entfernt. Leider kam ich bisher auf keine Lösung.
Mein Ansatz: /\(?!(\/)*)\*/
Funzt (logisch) ned :-(
Gruss Silvan
Hi,
Benötige einen Regexp, der mir alle /* */ Kommentare aus dem Script-File entfernt. Leider kam ich bisher auf keine Lösung.
s!/\(.+?)\/!!gs
Mein Ansatz: /\(?!(\/)*)\*/
Die Negativsuche brauchst Du da nicht - es gibt andere Wege, "alles bis zum nächsten x" zu sagen, als "alle nicht-x bis zum nächsten x" :-)
Funzt (logisch) ned :-(
Zu dieser Aussage gehört immer 1.) eine Übersetzung ins Deutsche und 2.) eine Fehlerbeschreibung.
Cheatah
Hoi,
Benötige einen Regexp, der mir alle /* */ Kommentare aus dem Script-File
entfernt. Leider kam ich bisher auf keine Lösung.
s!/\(.+?)\/!!gs
printf("/*\n"); /* confusing the regex */
Mein Ansatz: /\(?!(\/)*)\*/
Die Negativsuche brauchst Du da nicht - es gibt andere Wege, "alles bis zum
nächsten x" zu sagen, als "alle nicht-x bis zum nächsten x" :-)
Ich glaube nicht, dass man da mit einem RegEx auskommt.
Gruesse aus LH,
c.j.k
Hi,
printf("/*\n"); /* confusing the regex */
ja. Die Grenze einer jeden RegExp.
Ich glaube nicht, dass man da mit einem RegEx auskommt.
Wenn man sicherstellen kann, dass der Code sowas nicht enthält, reicht das. Die Wahrscheinlichkeit dafür ist höher, als man es z.B. bei dem Versuch hat, Links aus HTML-Code zu extrahieren.
Cheatah
Hoi,
printf("/*\n"); /* confusing the regex */
ja. Die Grenze einer jeden RegExp.
Richtig.
Ich glaube nicht, dass man da mit einem RegEx auskommt.
Wenn man sicherstellen kann, dass der Code sowas nicht enthält, reicht das.
Das wuerde ich mich nie wagen, sicherstellen zu wollen.
Die Wahrscheinlichkeit dafür ist höher, als man es z.B. bei dem Versuch hat,
Links aus HTML-Code zu extrahieren.
Wie meinst du das?
Gruesse aus LH,
c.j.k
Hi,
Wenn man sicherstellen kann, dass der Code sowas nicht enthält, reicht das.
Das wuerde ich mich nie wagen, sicherstellen zu wollen.
nun, je nach Projekt und persönlicher Kenntnis des Codes, ist das eventuell möglich.
Die Wahrscheinlichkeit dafür ist höher, als man es z.B. bei dem Versuch hat,
Links aus HTML-Code zu extrahieren.
Wie meinst du das?
Es gibt oft die Frage, mit welcher RegExp man irgendwas aus HTML-Code herausholt; oft mit einem "außer wenn es zwischen <x> und </x> steht" oder "außer wenn es Attributwert ist" verbunden. Das ist vom Typus her der gleiche Fall wie der, den Du angeführt hast.
Cheatah
Hoi,
Wenn man sicherstellen kann, dass der Code sowas nicht enthält, reicht
das.
Das wuerde ich mich nie wagen, sicherstellen zu wollen.
nun, je nach Projekt und persönlicher Kenntnis des Codes, ist das eventuell
möglich.
Sehe ich anders, aber gut ;-) Jeder nach seinem Geschmack.
Die Wahrscheinlichkeit dafür ist höher, als man es z.B. bei dem Versuch
hat,Links aus HTML-Code zu extrahieren.
Wie meinst du das?
Es gibt oft die Frage, mit welcher RegExp man irgendwas aus HTML-Code
herausholt; oft mit einem "außer wenn es zwischen <x> und </x> steht" oder
"außer wenn es Attributwert ist" verbunden. Das ist vom Typus her der gleiche
Fall wie der, den Du angeführt hast.
Ach so, ja, in der Tat. HTML-Code mit nur einem RegEx parsen zu wollen, halte
ich fuer ein sinnloses Unterfangen.
Gruesse aus LH,
c.j.k
Hallo,
im Perl Kochbuch findet sich zum Thema C-Kommentare entfernen die Anregung:
s{
/\*
.*?
\*/
}[]gsx
Steht aber schon "unvollständig" dahinter .....
;-)
Viele Grüße
Mathias
Moin,
im Perl Kochbuch findet sich zum Thema C-Kommentare entfernen die
Anregung:
s{
/\*
.*?
\*/
}[]gsx
Das ist doch genau dasselbe, was Cheatah geschrieben hat ;-) Der obige
RegEx ist nur eine andere Schreibweise.
Gruesse aus MS,
c.j.k
Hi,
Das ist doch genau dasselbe, was Cheatah geschrieben hat ;-)
stimmt ;-) Ich habe lediglich zusätzliche runde Klammern gesetzt - ich gehe gerne auf Nummer Sicher, was den "Scope" eines Operators wie "?" betrifft.
Der obige RegEx ist nur eine andere Schreibweise.
Ja. Die Verteilung auf mehrere Zeilen wird durch das "x" am Ende ermöglicht. Ich muss aber gestehen, dass ich noch nie gesehen habe, dass _unterschiedliche_ Klammertypen für den RegExp- und den Ersetzungspart verwendet werden.
So viel zum Thema "man lernt nie aus" :-)
Cheatah
Hoi,
Das ist doch genau dasselbe, was Cheatah geschrieben hat ;-)
stimmt ;-) Ich habe lediglich zusätzliche runde Klammern gesetzt - ich gehe
gerne auf Nummer Sicher, was den "Scope" eines Operators wie "?" betrifft.
Och, das ist recht einfach: das ? bezieht sich immer auf das vorhergehende
Zeichen. Bei einer Klammer, auf die zurueckliegende Klammer.
Der obige RegEx ist nur eine andere Schreibweise.
Ja. Die Verteilung auf mehrere Zeilen wird durch das "x" am Ende ermöglicht.
Ich muss aber gestehen, dass ich noch nie gesehen habe, dass
_unterschiedliche_ Klammertypen für den RegExp- und den Ersetzungspart
verwendet werden.
Doch, das geht -- allerdings nur bei Klammern :-)
So viel zum Thema "man lernt nie aus" :-)
Jap.
Gruesse aus LH,
c.j.k
Hi Cheatah,
Hat mir wirklich geholfen.....was aber besagt die Zeichenkette "(.+?)" genau?
Merci für deinen Tip :)
Gruss Silvan
Hi,
Benötige einen Regexp, der mir alle /* */ Kommentare aus dem Script-File entfernt. Leider kam ich bisher auf keine Lösung.
s!/\(.+?)\/!!gs
Mein Ansatz: /\(?!(\/)*)\*/
Die Negativsuche brauchst Du da nicht - es gibt andere Wege, "alles bis zum nächsten x" zu sagen, als "alle nicht-x bis zum nächsten x" :-)
Funzt (logisch) ned :-(
Zu dieser Aussage gehört immer 1.) eine Übersetzung ins Deutsche und 2.) eine Fehlerbeschreibung.
Cheatah
Hoi,
ich glaube, die Lektuere von http://learn.to/quote wuerde dir
gut tun.
Hat mir wirklich geholfen.....was aber besagt die Zeichenkette
"(.+?)" genau?
.+ bedeutet, ein oder beliebig viele beliebige Zeichen. Das '?'
dahinter macht den Modifier '+' ungreedy. Das bedeutet in diesem
Zusammenhang, er matcht nur bis zum naechsten */.
Gruesse aus MS,
c.j.k
Hi,
ich glaube, die Lektuere von http://learn.to/quote wuerde
dir gut tun.
Das klingt irgendwie vorwursvoll. Habe ich mich nicht korrekt verhalten oder ist was nicht in Ordnung?
.+ bedeutet, ein oder beliebig viele beliebige Zeichen. Das '?'
dahinter macht den Modifier '+' ungreedy.
Ich habe schon viel mit RegExp gemacht, allerdings habe ich von einem ? als ungreedy Operator noch nie was gehört.....
aber man lernt ja nie aus :)
Gruss Silvan
Hoi,
ich glaube, die Lektuere von http://learn.to/quote
wuerde dir gut tun.
Das klingt irgendwie vorwursvoll.
Noe, das war ein gut gemeinter Hinweis.
Habe ich mich nicht korrekt verhalten oder ist was nicht in
Ordnung?
Du hast einen TOFU geschrieben: Text Oben, Fullquote Unten. Nicht
gerade toll, sowas ;-)
.+ bedeutet, ein oder beliebig viele beliebige Zeichen. Das '?'
dahinter macht den Modifier '+' ungreedy.
Ich habe schon viel mit RegExp gemacht, allerdings habe ich von
einem ? als ungreedy Operator noch nie was gehört.....
Das Fragezeichen macht einen greedy Quantifier ungreedy, wenn es
direkt dahinter steht. Ansonsten bedeutet es nur 'einmal oder
keinmal'.
aber man lernt ja nie aus :)
In der Tat.
Gruesse aus MS,
c.j.k
Hi,
Das klingt irgendwie vorwursvoll. Habe ich mich nicht korrekt verhalten oder ist was nicht in Ordnung?
einige von uns - mich eingeschlossen - klingen nicht selten vorwurfsvoll, obwohl wir es gewöhnlich nicht so meinen. So auch das folgende:
Ich habe schon viel mit RegExp gemacht, allerdings habe ich von einem ? als ungreedy Operator noch nie was gehört.....
Du möchtest
perldoc perlre
lesen.
aber man lernt ja nie aus :)
Wie wahr das ist merkt man daran, wie oft man in die Doku guckt ;-)
Cheatah