6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)
  • Q:
    Bijdrager
    Pandikokku

    reguliere expressie: alles waar een string NIET in zit

    Voor een commentaar gedeelte van een site (PHP) wil ik URL’s gaan parsen met den reguliere expresse en preg_replace.

    Ik wil dat linkjes naar een bepaalde site worden vervangen door een ander linkje. Alles waar de string “domeinA.nl” niet in voorkomt moet worden vervangen.

    Hoe kan ik met een RegEx nou iets matchen waar een string NIET in voorkomt?

    http://www.fietsen.com/sparta en http://www.broeken.nl/spijkerbroek moeten dus gematched worden omdat “domeinA.nl” er niet in voorkomt. http://www.domeina.nl en http://domeina.nl moeten niet matchen en ongemoeid blijven.

    constructies als (?!domeinA.nl) krijg ik niet aan de praat.:(

    Bijdrager
    computer space

    En de vervangingscode toepassen in het ELSE gedeelte van de vergelijking?

    Bijdrager
    iJoost

    Je kunt het stuk wat je niet wilt vervangen tussen ronde haakjes plaatsen en dan in de string waarmee je de match vervangt weer teruglaten komen als $1 (als het het eerste stel ronde haakjes was (en anders een evenredig hoger nummer)).

    Dus zoiets als /wel(niet)wel/ en dan vervangen door xxx$1yyy geeft xxxnietyyy.

    Is dat wat je bedoelt?

    Overigens kun je het matchen en het replacen natuurlijk ook gewoon scheiden. Hoeft niet in een keer.;-)

    Bijdrager
    henno
    ”Martiniman”

    En de vervangingscode toepassen in het ELSE gedeelte van de vergelijking?

    Dat zou ik ook doen:

    [code:1:b65cdceb37]
    if (! preg_match(/domeinA.nl/, $string){
    preg_replace … (etc)
    }
    [/code:1:b65cdceb37]

    Net als op de commandline je grep – v kunt doen ipv grep om de niet-matches te krijgen.

    Binnen de reguliere expressietaal zelf kan het niet, maar gelukkig zijn er logische
    operatoren en if-statements, of switches als -v….

    Bijdrager
    Pandikokku
    ”iJoost”

    Dus zoiets als /wel(niet)wel/ en dan vervangen door xxx$1yyy geeft xxxnietyyy.

    Is dat wat je bedoelt?

    Nee, ik wil niet een bepaald deel ongemoeid laten, ik wil delen van de string vervangen, zolang er elders in de string een bepaalde substring NIET voorkomt.

    @martiniman en henno: dat ga ik proberen!

    Bijdrager
    KarelWillem

    Schijnt hier lekker de zon en lees ik ‘Alles waar een string niet in zit’…

    Vul de rest zelf maar in.

    :wink:

6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.