Eventuali duplicati:
A Regex that will never be matched by anythingUna semplice regex Perl garantita per non corrispondere mai a una stringa?
Ho uno script che prende un'espressione regolare come parametro. Per impostazione predefinita, voglio impostare l'espressione regolare a qualcosa che non potrà mai corrispondere a qualsiasi stringa, quindi posso semplicemente dire
if ($str =~ $regex)
senza per esempio dover controllare prima ($ regex) prima.
mi si avvicinò con
qr/[^\s\S]/
ma non so se questo corrisponderà qualche personaggio utf8 che non è né uno spazio né un non-spazio.
La soluzione di MJD è meglio di qualsiasi altra cosa offerto qui o sulla presunta domanda DUP che questo merita di essere conservato. – tchrist
@tchrist: Dal mio punto di vista, per mia stessa ristretto, quasi tutto di MJD è oro puro. L'uomo è un Perl Alchimista o qualcosa del genere. – Hugmeir
Per illuminare: il pattern vuoto '//' o '(? :)' non asserisce nulla, e quindi corrisponde sempre. '(?!)' è un lookahead negativo per il pattern vuoto (ciò che si trova tra '!' e ')' è il corpo dell'asserzione) e quindi non può mai corrispondere. – hobbs