Come abbinare una linea che non contiene una parola

Mi stavo chiedendo come abbinare una linea che non contiene una parola specifica usando il Regex in stile Python (basta usare il Regex, non coinvolgere le funzioni di Python)?

Esempio:

PART ONE OVERVIEW 1 Chapter 1 Introduction 3 

Voglio abbinare le linee che non contengono la parola “PARTE”?

Grazie e saluti!

Questo dovrebbe funzionare:

 /^((?!PART).)*$/ 

Se volessi escluderla dall’inizio della riga (lo so che non lo fai, ma solo FYI), potresti usare questo:

 /^(?!PART)/ 

Modifica (su richiesta): Perché questo modello funziona

La syntax (?!...) è un aspetto negativo , che ho sempre trovato difficile da spiegare. Fondamentalmente, significa “qualsiasi cosa segua questo punto non deve corrispondere all’espressione regolare /PART/ .” Il sito che ho collegato lo spiega molto meglio di me, ma proverò a suddividere questo:

 ^ #Start matching from the beginning of the string. (?!PART) #This position must not be followed by the string "PART". . #Matches any character except line breaks (it will include those in single-line mode). $ #Match all the way until the end of the string. 

L’idioma ((?!xxx).)* È probabilmente più difficile da capire. Come abbiamo visto, (?!PART) guarda la stringa avanti e dice che tutto ciò che viene dopo non può corrispondere al subpattern /PART/ . Quindi, quello che stiamo facendo ((?!xxx).)* Sta passando attraverso la stringa lettera per lettera e applicando la regola a tutti loro. Ogni personaggio può essere qualsiasi cosa, ma se prendi quel personaggio e i seguenti personaggi dopo di esso, è meglio non prendere la parola PARTE .

Le ancore ^ e $ sono lì per chiedere che la regola venga applicata all’intera stringa, dall’inizio alla fine. Senza quegli ancoraggi, qualsiasi parte della stringa che non iniziava con PART sarebbe una corrispondenza. Anche la PARTE stessa avrebbe delle corrispondenze, perché (per esempio) la lettera A non è seguita dalla stringa esatta PARTE .

Dato che abbiamo ^ e $ , se PART era ovunque nella stringa, uno dei caratteri corrisponderebbe (?=PART). e la partita complessiva fallirebbe. Spero che sia abbastanza chiaro per essere utile.