php
  • regex-negation
  • 2013-03-25 13 views 5 likes 
    5

    Próbuję dopasować wszystkie wyrazy opatrzone {}, ale nie słowa "_loop". Nie widzę, gdzie się mylę z moją ekspresją reg.Negatywna podpowiedź PHP Regexp

    $content = '<h1>{prim_practice_name}</h1><p>{prim_content}</p><p>Our Locations Are {location_loop}{name} - {state}<br/>{/location_loop}</p>'; 
    $pattern = '/\{(\w*(?!\_loop))\}/'; 
    
    +0

    ty szukasz lookbehind '<'?!. – mario

    Odpowiedz

    3

    Dzieje się tak dlatego, \ w * „zjada” zatrzymanie słowo „_loop” przed czeku, aby zapobiec, że należy najpierw sprawdzić słowo (przed \ w *), jak następuje:

    $pattern = '/\{((?!\w*_loop\})\w*)\}/'; 
    

    lub można użyć ?< !:

    $pattern = '/\{(\w*(?<!_loop))\}/'; 
    
    Powiązane problemy