2016-06-27 7 views
1

(Um zu klären, ich spreche über Ctrl-Shift-F suchen. Aktuelles Dokument.)

ich für Linien gesucht werden soll, die einen bestimmten nicht enthalten Zeichen, wie '(', so denke ich, ich brauche^und $ Indikatoren, um die gesamte Zeile zu bekommen. Aber das stürzt nur die GUI. Gibt es einen Weg nach vorne?

Zeilen ohne ( sollte von diesem behandelt werden:

^[^\(]*$ 

Aber das hängt, wie auch die einfachere "^.*$".

Vielleicht gibt es eine andere Möglichkeit, diese Zeilen zu finden?

EDIT: die vorgeschlagene "doppelte" Frage ist über C# RegEx-Klasse, völlig völlig anders als Visual Studio 2010 interaktive reguläre Ausdrücke.

+0

^^ [^ (] * $ 'ist der richtige Weg zu tun, was Sie wollen ... können Sie uns geben, wie Sie es verwenden? – TemporalWolf

+0

Mögliche Duplikate von [Regex-Abgleich dauert sehr lange] (http://stackoverflow.com/questions/3403512/regex-match-take-a-very-long-time-to-execute) – TemporalWolf

+1

Duplizieren, was besser in Ihrem speziellen Fall funktioniert: '^ [^ (] { 1,}? $ 'Dies zwingt es, jedes Mal, wenn es den Vergleich macht, ein Zeichen zu essen, und das faule'? 'Verhindert, dass es mehr als 1 Zeile zu einer Zeit isst, was verhindern sollte, dass es explodiert. – TemporalWolf

Antwort

0

Wenn Sie Linien entsprechen möchten, verwenden Sie ^[^\r\n(]*$, wo \r und \n von [^(] ausgeschlossen sind - Wiktor Stribiżew 27. Juni um 19:36 Uhr

Dieser Kommentar ist in der Tat die Antwort. Anscheinend können alte Visual Studio-Suchen mehrere Zeilen umfassen, und ^.*$ bedeutet also beginnen Sie am Anfang der Zeile, gehen Sie eine beliebige Anzahl von Zeichen bis zum Ende des Dokuments, dann am Ende einer Zeile zu stoppen. Diese Zeichen können eine beliebige Anzahl von Zeilenumbrüchen enthalten.

VS hat anscheinend diese Abfrage nicht effizient implementiert und hängt endlos.

Der Vorschlag von W.S. schließt explizit Zeilenumbrüche von den Suchparametern aus, wodurch nur eine einzige Zeile erzwungen wird.

Visual Studio 2012 ändert sich in eine konventionellere Suche mit regulärem Ausdruck, bei der die Ergebnisse auf einzelne Zeilen beschränkt sind. Daher holt ^. * $ Alle Zeilen eines Dokuments nacheinander ab.