2013-05-15 16 views
5

voglio usare regex per evidenziare le funzioni di un nuovo linguaggio di programmazione, ma ho un problema ad escludere le funzioni che hanno la parola "esportato" cosìRegex abbinare una linea senza una specifica parola

linee ok che devo corrispondere esempi:

routine hello 
ROUTINE hello 
    routine hello 
    ROUTINE hello(a:INTEGER) 
    routine hello (a : INTEGER) 
    routine hello (a : INTEGER , b: STRING) 

linee che non voglio corrispondere esempi:

routine hello (a : INTEGER , b: STRING) exported 

che ho provato con

012.
^[[:blank:]]*routine[[:blank:]]+([[:alnum:]_])+[[:blank:]]*([[:alnum:]_:,[:space:]]*)/^(?!.*exported)$/ 

ma non funziona.

risposta

1

È possibile utilizzare un'espressione come questo per soddisfare tutte le righe che non contengono la parola "esportati":

(?m)^(?!.*\bexported\b).*$ 
+0

cercherò , ma è importante che sia una "routine" e quali parametri ci sono (se ci sono dentro le parentesi), io li inserirò nell'output quindi avrò il mio "(non esportato) elenco di funzioni" – Dedanan

7

La seguente espressione fa anche il trucco:

^(?!.*exported).*$ 

|________________ line begin 
|_______________ negative lookahead 
    |____________ any characters 
     |__________ your exclusion word 
       |_ any characters 
       |_ end of line 
Problemi correlati