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.