reguläre ausdrücke
Florian Haupt
- javascript
Ich habe folgende Frage,
wie kann ich mir durch einen regulären ausdruck einen Substring (im beispiel den image tag) ausgeben lassen ?
Beispiel:
<A href="http://www.test.de"><IMG border=0 src="bla.gif"></A>
hab schon alles mögliche probiert..
Gruß, flo
Sup!
$foo = '<A href="http://www.test.de"><IMG border=0 src="bla.gif"></A>%';
while ( $foo =~ s/(<.*?>)//)
{
print $1."\n";
}
in Perl ;-)
Gruesse,
Bio
Hi,
danke an alle die "sinnvolle" antworten gegeben haben..
ich werde mich das näxte mal mit der formulierung der frage mehr bemühen.... :-)
trotzdem danke
cu
flo
HI!
RegExp sind meine Freunde - Allerdings hab ich gerade kein Perl zur Hand um meinen Versucht Testen zu können, aber das folgende sollte im schlimmsten Fall einen guten Ansatz und im Besten Fall eine Lösung liefern:
/<IMG .*?>/
bin mir nicht sicher, ob man < > wirklich codieren muss.
was allerdings wichtig ist, und in sehr vielen implementierungen der regexp fehlt, ist die möglichkeit aus einem "gefräsigen" RegExp einen "nicht gefräsigen" zu machen. Das geschieht durch das ? nach dem .*
Ohne dem ? würde der RegExp so lange suchen, bis er das letzt > findet, was in deinem Fall <img ...></a> liefern würde.
Wie gesagt, Perl kennt das ? und somit sollte das oben genannte mehr oder weniger funzen.
Liebe Grüße
fredy
Hi folks!
/<IMG .*?>/
[...]
Ohne dem ? würde der RegExp so lange suchen, bis er das letzt > findet, was in deinem Fall <img ...></a> liefern würde.
Dem kann man in diesem Fall begegnen, indem man
/<img [^>]*>/
schreibt.
Jedoch ist die Aufgabenstellung von Florian "unterspezifiziert", wie ein wohlbekannter Gast dieses Forums aus aelteren Tagen zu sagen pflegte. Wonach soll denn gesucht werden? Nach dem IMG-Tag? Oder nach allem, was innerhalb des Links steht? Oder was?
So long
Hi!
/<img [^>]*>/
Das gefällt mir!
Liebe Grüße
fredy
n'Abend miteinander !
Obwohl alle Vorposter so weit ich es beurteilen kann [1] mit
den RegExp recht haben wundert es mich doch, dass alle
Perl-Beispiele (ok, ist ja wirklich eine Perle) bringen.
Im Thema steht doch eindeutig "Javascript". Und wie ich
mich soeben überzeugen konnte (Schande, ist mir bis jetzt
entgangen) beherrscht Javascript - lt. SelfHTML 8.0 :)
Und dann wundern wir uns wieder über Postings wie "ich fragte
nach Birnen und alle redeten von Äpfeln" [2] ;-)
Schönen Abend noch !
MfG McNavc
[1] McNavc bastelt sich einen regulären Ausdruck:
[2] Auch wenn Viele nur nach Obst fragen und dabei an Birnen denken :)
Sup!
Im Thema steht doch eindeutig "Javascript". Und wie ich
mich soeben überzeugen konnte (Schande, ist mir bis jetzt
entgangen) beherrscht Javascript - lt. SelfHTML 8.0 :)
- reguläre Ausdrücke.
So ist es. Und diese RegExp kommen von Perl, und wenn der gute Mann, der die Frage gestellt hat, nicht dumm oder sowas ist, dann wird er die angebotenen RegExp wohl von Perl nach JS portieren können. Das ist hier ja nicht das Komplettlösungsforum oder so, wird erzählt.
Im übrigen ist die Frage in der Tat nicht gut gestellt, weil nicht daraus hervorgeht, was er eigentlich rausfiltern will.
Und - so ein Pech - der ach-so-tolle IE beherrscht im Gegensatz zu Netscape (seit Version 3, glaube ich) und Mozilla den non-greedy-Operator "?" _nicht_. IE-Coder dürfen also mit lustigen Suchausdruecken und Schleifen herumprobieren.
Gruesse,
Bio
Sup!
Im Thema steht doch eindeutig "Javascript". Und wie ich
mich soeben überzeugen konnte (Schande, ist mir bis jetzt
entgangen) beherrscht Javascript - lt. SelfHTML 8.0 :)
- reguläre Ausdrücke.
So ist es. Und diese RegExp kommen von Perl, ...
Äh, nicht ganz. Perl ist nur für die IMHO ausgezeichnete Implementierung und Integration in die Sprache bekannt.
Im übrigen ist die Frage in der Tat nicht gut gestellt, weil nicht daraus hervorgeht, was er eigentlich rausfiltern will.
Das ist vollkommen richtig.
Hier so auf die Schnelle "richtige" Lösungen (sicher lich nicht vollständig), um das IIMG-Tag zu erwischen:
/<IMG border=0 src="bla.gif">/
/(<IMG[^>]*>)/
/(<\s*IMG[^>]*>)/
/(<\s*img[^>]*>)/i
/(<\s*IMG.*?>)/
/(<\s*img.*?>)/i
Aber vielleicht wollte er einfach nur http://selfhtml.teamone.de/javascript/objekte/regexp.htm#dollar_1_9 lesen.
Dort Sthet nämlich, wie in Javascript auf die Treffer zugegriffen werden kann.
Und - so ein Pech - der ach-so-tolle IE beherrscht im Gegensatz zu Netscape (seit Version 3, glaube ich) und Mozilla den non-greedy-Operator "?" _nicht_.
Was allerdings auch nicht den Untergang des Abendlandes, äh, das Scheitern beim Finden einer brauchbaren Lösung, bedeutet.
IE-Coder dürfen also mit lustigen Suchausdruecken und Schleifen herumprobieren.
Was allerdings auch bedeutet, daß verantwortungsvolle, oder zumindest jene, die sich nichts vorwerfen lassen wollen, JavaScript-Programmierer den Non-Greedy-Operator tunlichst vermeiden, da IMHO im Web der kleinste gemeinsame Nenner das Optimum darstellt.
Grüße
Klaus
n'Abend Bio !
Und - so ein Pech - der ach-so-tolle IE beherrscht im Gegensatz zu Netscape (seit Version 3, glaube ich) und Mozilla den non-greedy-Operator "?" _nicht_. IE-Coder dürfen also mit lustigen Suchausdruecken und Schleifen herumprobieren.
Och, wer unter M$ Excel die Klippe 1+1=1,99999998 umschifft hat,
wird sich auch damit fertig ;-)
MfG McNavc
nochmals n'Abend !
Och, wer unter M$ Excel die Klippe 1+1=1,99999998 umschifft hat,
wird sich auch damit fertig ;-)
Der Deutschbuch hat mich sehr gehilft.
Muss natürlich ... wird sicher auch damit ... lauten.
MfG McNavc
Hi there!
Und - so ein Pech - der ach-so-tolle IE beherrscht im Gegensatz zu Netscape (seit Version 3, glaube ich) und Mozilla den non-greedy-Operator "?" _nicht_.
Netscape kann das? Hast Du das ausprobiert? In ihrer Doc auf http://developer.netscape.com/docs/manuals/js/client/jsguide/regexp.htm steht jedenfalls nichts davon.
So long
P.S. Vorsicht vor Antje und Marlies! Die sind zur Zeit ziemlich blutruenstig drauf. *g*
Sup!
Ein Ritter steht zu seinem Wort, und kündet stets die Wahrheit, Tor!
Nimm' dies!
<html>
<script type="text/JavaScript">
var supi ="aaaaaBaaaaaB";
var suche = /(.*?B)/;
suche.exec(supi);
alert (RegExp.$1);
</script>
</html>
Gruesse,
Bio
*gaehn* aeh Moin!
Ein Ritter steht zu seinem Wort, und kündet stets die Wahrheit, Tor!
Zu zweifeln am ersten Teil ich niemals wagen wuerd'. *g*
Nimm' dies!
<html>
<script type="text/JavaScript">
var supi ="aaaaaBaaaaaB";
var suche = /(.*?B)/;
suche.exec(supi);
alert (RegExp.$1);
</script>
</html>
Kommt raus: "aaaaaBaaaaaB". Mit /([^B]*B)/ dagegen: "aaaaaB".
Netscape 4.7 [en].
So long && May the source be with you
Sup!
Kommt raus: "aaaaaBaaaaaB". Mit /([^B]*B)/ dagegen: "aaaaaB".
Netscape 4.7 [en].
O Nein! O Graus! Welch' ueblen Streich spielt da das Schicksal mir?
Im Mozilla funktioniert es auf jeden Fall, und ich dachte, in meinem Netscape haette es auch funktioniert...
Nun denn, testen werde ich, mich melden, wenn die Stunde dazu kommt!
Gruesse,
Bio
Hallo,
Und dann wundern wir uns wieder über Postings wie "ich fragte
nach Birnen und alle redeten von Äpfeln" [2] ;-)
Aber um beide zu pflücken braucht man eine Leiter ;)
gruß
eric
n'Abend eric !
Aber um beide zu pflücken braucht man eine Leiter ;)
Wieso ? Bei uns zu Hause sind die Bäume nicht so hoch. :)
MfG McNavc