J'ai le filtre Pig Latin suivant:
filtered = FILTER raw BY year >= 1960 AND string MATCHES "(?!.*[0-9].*|.{1}|.*@.*|.*www.*|.*http.*)";
J'avais l'intention d'obtenir les résultats suivants pour les chaînes suivantes:
a #false .{1}
email@example.com #false .*@.*
http://somesite.com #false .*http.*
www.somesite.com #false .*www.*
12word #false .*[0-9].*
wo12rd #false .*[0-9].*
word12 #false .*[0-9].*
red #true
Au lieu de cela, je reçois un résultat vide.
MODIFIER: J'ai "mis à jour la regex pour:
"^(?!.*[0-9].*|.{1}|.*@.*|.*www.*|.*http.*)$"
après correction de m.buettner, mais continue d’obtenir un résultat vide.
Réponses:
1 pour la réponse № 1Il y a deux problèmes. Premièrement, il semble que Pig Latin vous oblige à faire correspondre la chaîne complète au lieu de "juste une correspondance quelque part dans la chaîne". Mais votre regard négatif ne consomme aucun caractère, il ne correspond donc pas à la totalité de la chaîne. Cela pourrait simplement être résolu en ajoutant .*
. Deuxièmement votre règle .{1}
(où {1}
redondant) ne nécessite pas que ce caractère soit le seul caractère de la chaîne. Donc, dans votre dernier exemple, il va simplement consommer le r
de red
et déclencher l'anticipation négative.
Voici donc la solution:
(?!.*[0-9]|.$|.*@|.*www|.*http).*