2016-10-14 2 views
0

Ich möchte Dateien nach ihrem Inhalt in Total Commander suchen, also möchte ich eine Regex erstellen, aber ich kann kein Handbuch finden, wo es wirklich erklärt würde. Meine Situation ist, dass ich so etwas wie dies benötigen:Komplexer regulärer Ausdruck ... UND ODER, Negation

fileContains("<html>") && fileContains("{myVariable1}") && fileNotContains("<script>") 

ich diesen cca schreiben:

(<html>)+ 
({myVariable1})+ 
(<script>){0} ... but this does not work for me 

Und ich kann es nicht alle zusammen. Irgendwelche Ideen, bitte? Oder haben Sie einen Link zu einer exzellenten Regex-Erklärung?

Antwort

0

versuchen diese regex:

(?=.*\{myVariable1\})(?=.*<html>)(?!.*<script>) 

es nur 3 Lookaheads in einer Reihe ist. Einer davon ist ein negativer Lookahead. Beachten Sie den Modifikator "Single Line", um "dot match newline" zu aktivieren.

bearbeiten (pro Kommentar): Ich denke, Total Regex Engine von Total Commander unterstützt überhaupt keine Lookarounds. Während Sie zwei positive Lookaheads zu einem äquivalenten "konsumierenden" Muster mit etwas wie diesem ungetesteten Regex kombinieren können: (.*(\{myVariable1\}|<html>)){2}, können Sie die 'negierte Suche' nicht innerhalb einer einzigen Regex einschließen, außer Sie haben eine legitime Regex-Engine.

Sie könnten this Total Commander regex plug-in versuchen:

A RegEx Inhalt Plug-in mit Unicode-Unterstützung - basierend auf Perl Compatible Regular Expressions (PCRE) Bibliothek. Dieses Plug-in kann TC RegEx-Engine für Inhaltsdatei ersetzen

+0

Total Commander sagt mir, dass es ein Fehler auf Position 20. Wenn ich zu verwenden versuchen: (?. = * HALLO) der Fehler ist auf Position 10 Es ist schwer für mich, einen Fehler zu finden, da ich Ihr Kommando nicht verstehe. – Racky