Frage

Ich möchte einen Ausdruck, der fehlschlägt, wenn er auf Wörter wie „boon.ini“ und „http“ stößt.Das Ziel wäre, diesen Ausdruck zu verwenden und ihn für jeden Satz von Schlüsselwörtern konstruieren zu können.

War es hilfreich?

Lösung

^(?:(?!boon\.ini|http).)*$\r?\n?

(aus RegexBuddy 's-Bibliothek) wird jede Zeile übereinstimmen, die nicht boon.ini enthält und / oder http. Ist das, was Sie wollen?

Andere Tipps

Ein alternativer Ausdruck, der verwendet werden könnte:

^(?!.*IgnoreMe).*$

^ = gibt den Beginn der Zeile
$ = zeigt das Ende der Zeile
(?! Expression) = Null anzeigt Breite nach vorne schaut negativ Spiel auf dem Ausdruck

Die ^ an der Front benötigt werden, sonst, wenn der negativer Vorgriff von irgendwo innerhalb / außerhalb des ‚IgnoreMe‘ Textes beginnen konnte ausgewertet -. Und ein Spiel machen, wo man es nicht wollen

z. Wenn Sie die regex verwenden:

(?!.*IgnoreMe).*$

Mit der Eingabe „Hallo IgnoreMe Bitte“, dies wird in etwas führen wie: „gnoreMe Bitte“, wie der negativer Blick findet voraus, dass es keine vollständige Zeichenfolge ‚IgnoreMe‘ nach dem ‚I‘

Anstatt das Ergebnis innerhalb des Ausdrucks zu negieren, sollten Sie es in Ihrem Code tun. Auf diese Weise wird der Ausdruck ziemlich einfach.

\b(boon\.ini|http)\b

Würde wieder true wenn boon.ini oder http überall in Ihrem String ist. Es wird nicht wegen der \b Wörter wie httpd oder httpxyzzy übereinstimmen oder Wortgrenzen. Wenn Sie möchten, können Sie sie einfach entfernen und es für entsprechen. Um weitere Keywords hinzufügen, nur mehr Rohre hinzuzufügen.

\b(boon\.ini|http|foo|bar)\b

Sie können auch durch das Schreiben einer regex bedient werden, wird Erfolg , wenn sie die Worte trifft Sie suchen, und dann die Bedingung invertieren.

Zum Beispiel in Perl würden Sie verwenden:

if (!/boon\.ini|http/) {
    # the string passed!
}
^[^£]*$

Der obige Ausdruck wird nur das Pfund-Symbol aus dem String beschränken. Auf diese Weise können alle Zeichen außer Zeichenfolge.

Welche Sprache/Regexp-Bibliothek?Ich dachte, Ihre Frage betreffe ASP.NET. In diesem Fall können Sie den Abschnitt „Negative Lookhead“ dieses Artikels sehen:http://msdn.microsoft.com/en-us/library/ms972966.aspx

Streng genommen definiert die Negation eines regulären Ausdrucks immer noch eine reguläre Sprache, aber es gibt nur sehr wenige Bibliotheken/Sprachen/Tools, die es ermöglichen, sie auszudrücken.

Negatives Lookahed kann Ihnen möglicherweise den gleichen Nutzen bringen, aber die tatsächliche Syntax hängt davon ab, was Sie verwenden.Tims Antwort ist ein Beispiel mit (?...)

Ich habe diese (basierend auf Tim Pietzcker Antwort) nicht-Produktion Sub-Domain-URLs für Google Analytics-Profil Filter ausschließen:

^\w+-*\w*\.(?!(?:alpha(123)*\.|beta(123)*\.|preprod\.)domain\.com).*$

Sie können den Kontext sehen hier: Regex Mehrere Wörter auszuschließen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top