Beim Umwandeln einer großen Liste beobachteter Wörter in reguläre Ausdrücke habe ich einige Möglichkeiten gefunden, die Filter zu umgehen. Diese scheinen sowohl für „normale
Richtig, das ist im Allgemeinen eine Art von Dingen, bei denen wir uns nicht die Zeit nehmen, zu streiten, denn es gibt viele ‘clevere’ Tricks, um jede Art von Wortblockliste zu umgehen. Unicode ist ein sehr, sehr großer Raum.
Tatsächlich haben wir dies vor einiger Zeit bei einer Reihe riesiger Bildungsprojekte ausprobiert.
Bevor es aufgegeben wurde, ging man mit einer unscharfen Übereinstimmung (fuzzy matching) live, was vorhersehbar alle möglichen Probleme für legitime Anwendungsfälle verursachte.
Gesperrte Wörter dienen hauptsächlich als ‘erste Verteidigungslinie’ gegen unangemessene Wörter. Dennoch ist die Gemeinschaft notwendig, um Umgehungen und Verstöße zu melden.
Keine von dir entwickelte Regex wird in der Lage sein, ein
zu erkennen.
Nur zur Info: [] steht für „Zeichenklassen“. In Perl-regulären Ausdrücken und möglicherweise auch in Ruby-Ausdrücken ist \b außerhalb einer Zeichenklasse eine „Wortgrenze“ und innerhalb einer Zeichenklasse ein „Rücklöschzeichen“ (Backspace). In C ist \b immer ein Rücklöschzeichen (genauer gesagt ). Rücklöschzeichen sind die meiste Zeit nicht nützlich, während Wortgrenzen es sind – daher die Neudefinition.
Um einen regulären Ausdruck zu verwenden, der entweder „forbidden“ oder „forbidden“ erkennt, würde ich wahrscheinlich Folgendes verwenden:
\b_?forbidden_?\b
(Ich weiß auch, wie man alle Buchstaben mit XX; kodiert, um Unicode-Tricks oder den regulären Ausdruck zu umgehen.)
Mir war nie bewusst, dass es je nach Kontext einen Unterschied gibt. Vielen Dank für die Erklärung! ![]()