Regex: non contiene determinati personaggi


274

Ho bisogno di una regex da abbinare se in una frase NON ci sono <o>.

Se nella stringa sono presenti <o>, deve restituire false.

Ho avuto un parziale successo con questo, ma solo se i miei <> sono all'inizio o alla fine:

(?!<|>).*$

Sto usando .Net se questo fa la differenza.

Grazie per l'aiuto.

Risposte:


436
^[^<>]+$

Il cursore nella classe di caratteri ( [^) significa corrispondere a qualsiasi cosa, ma, quindi, all'inizio della stringa, quindi uno o più di qualsiasi cosa tranne <e >, quindi, la fine della stringa.


3
Cosa significa il primo cursore? Questo non significherebbe nulla che non contenga quei caratteri ... significa quindi solo stringhe che contengono quei caratteri?
RobKohr,

11
Il primo punto di inserimento indica l'inizio della stringa. Il dollaro significa, fine della stringa.
Ned Batchelder,

2
@PhilipRego Fai attenzione ai caratteri speciali: la shell ne interpreta alcuni. Guarda se ora hai un file chiamato '] + $' nella tua directory. Inserisci l'intera regex tra virgolette singole per farlo funzionare.
Ned Batchelder,

Bella risposta! Potresti aggiungere una spiegazione del perché c'è un +e il primo cursore?
Dr_Zaszuś,

1
@ Dr_Zaszuś "+" significa "uno o più" e "^" significa "inizio della stringa".
Ned Batchelder il

59

Ecco qui:

^[^<>]*$

Questo verificherà la stringa che ha no <e no>

Se vuoi testare una stringa che può avere <e >, ma deve anche avere qualcos'altro, dovresti usare solo

[^<>] (or ^.*[^<>].*$)

Dove [<>]mezzo qualsiasi <o> e [^<>]mezzi qualsiasi che non è di <o> .

E ovviamente il link obbligatorio .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.