Martin Hein: Reguläre Ausdrücke

Hallo Forum,

ich raff das immernoch nicht mit den regulären Ausdrücken.

Kann mir da mal jemand helfen ?

string = '<p><a href="http://dcbkk16.home.net/_admin/#Beitrag zur freiwilligen Krankenversicherung" class="interner_link" title="Beitrag zur freiwilligen Krankenversicherung"><p><a href="http://dcbkk16.home.net/_admin/#Beitrag zur freiwilligen Krankenversicherung" class="interner_link" title="Beitrag zur freiwilligen Krankenversicherung">';

Ich möchte alle Links mit "#" dahingehend verändern,
dass sie mit "#" beginnen.

Ich suche also nach allen 'href="<irgendwas>#' und möchte sie ersetzen durch 'href="#'

nach meine Verständnis müsste das so lauten:

string.replace(/href=".+#/g, "href="#");

aber das Ergebnis ist:
----------------------
string = '<p><a href="#Beitrag zur freiwilligen Krankenversicherung" class="interner_link" title="Beitrag zur freiwilligen Krankenversicherung"><p>';

... es wird also die Hälfte verschluuckt, was ich mir nicht erklären
kann.

Kann mir das jemand erklären ?

beste gruesse,
martin

  1. gudn tach!

    nach meine Verständnis müsste das so lauten:

    string.replace(/href=".+#/g, "href="#");

    aber [...] es wird [...] die Hälfte verschluuckt, was ich mir nicht erklären kann.

    Kann mir das jemand erklären ?

    selfhtml. ;-)

    prost
    seth

  2. Hallo Martin.

    string = '<p><a href="http://dcbkk16.home.net/_admin/#Beitrag zur freiwilligen Krankenversicherung" class="interner_link" title="Beitrag zur freiwilligen Krankenversicherung"><p><a href="http://dcbkk16.home.net/_admin/#Beitrag zur freiwilligen Krankenversicherung" class="interner_link" title="Beitrag zur freiwilligen Krankenversicherung">';

    Ich möchte alle Links mit "#" dahingehend verändern,
    dass sie mit "#" beginnen.

    string = string.replace('http://dcbkk16.home.net/_admin/', '');

    Reguläre Ausdrücke sind hier überflüssig.

    Ich suche also nach allen 'href="<irgendwas>#' und möchte sie ersetzen durch 'href="#'

    nach meine Verständnis müsste das so lauten:

    string.replace(/href=\".+#/g, "href=\"#");

    Also die Zeichenkette „href="“, dann irgendetwas so viel wie möglich und irgendwann einmal ein „#“.

    aber das Ergebnis ist:

    string = '<p><a href="#Beitrag zur freiwilligen Krankenversicherung" class="interner_link" title="Beitrag zur freiwilligen Krankenversicherung"><p>';

    Stimmt exakt.

    ... es wird also die Hälfte verschluuckt, was ich mir nicht erklären
    kann.

    Kann mir das jemand erklären ?

    Siehe oben. Dein Muster macht nur, was es soll. Es ist momentan einfach noch zu gierig, was du abstellen kannst:

    string.replace(/href=\"([^#]+)#/g, "href=\"#");

    Hier beschränkst du also die Menge der Zeichen vor dem „#“ auf alles AUSSER diesem Zeichen, weshalb hier schrittweise ausgeführt wird.

    Einen schönen Mittwoch noch.

    Gruß, Mathias

    --
    ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
    debian/rules
  3. Hallo Forum,

    aha, "gierig" ist das Stichwort.

    Danke für den Link, Danke für die Lösung.

    beste gruesse,
    martin