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

    Sto cercando di abbinare tutte le parole racchiuse con {} ma non le parole con "_loop". Non riesco a vedere dove sto andando male con la mia espressione di regista.PHP Regexp negativo lookahead

    $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

    siete alla ricerca di un lookbehind '<'?!. – mario

    risposta

    3

    Questo accade perché \ w * "mangia" la parola fermare "_loop" prima del check, per evitare che si dovrebbe verificare la parola prima (prima di \ w *), come la seguente:

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

    oppure è possibile utilizzare un ?< !:

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