2010-08-03 9 views
12

Ich versuche, alle HTML-Eingabe-Tags mit einer Art von "Text" in Netbeans 6.9 zu suchen.Netbeans Mehrzeilig Regulärer Ausdruck Suche

Unterstützt NetBeans die Suche nach Zeichenfolgen mit regulären Ausdrücken mit unterschiedlichen Suchkriterien, die über mehrere Zeilen verteilt sind, oder funktioniert es nur innerhalb einer einzelnen Zeile?

Dieser reguläre Ausdruck

<input.*type=['"]text['"].*/> 

funktioniert, wenn der gesamte Tag und seine Attribute in einer einzigen Zeile wie diese

<input name="data[something]" id="some_id" value="some_value" type="text" /> 

geschrieben sind, sondern weil ich lange Zeilen Code vermeiden Schreiben und brechen sie als Solch

der gleiche reguläre Ausdruck funktioniert nicht.

Gibt es eine Möglichkeit, dies zu erreichen?

Antwort

20

Standardmäßig stimmt das Metazeichen . nicht mit Zeilenvorschüben überein. Es sollte eine Option namens "Single-Line" oder "DOTALL" oder ähnlich sein, die den Punkt alle Zeichen passt. Oder Sie könnten (?s) an den Anfang der Regex hinzufügen und den gleichen Effekt für genau diese Regex erhalten.

Aber es wäre besser, die .* durch [^<>]* zu ersetzen. Im DOTALL-Modus versucht .*, den gesamten Rest des Dokuments zu verschlingen, was zu einer langsamen Leistung und/oder falschen Übereinstimmungen führt, aber [^<>]* wird niemals versuchen, über das Ende des Tags hinaus übereinzustimmen.

Übrigens, wenn Sie ['|"] verwenden, um eine einfache oder doppelte Anführungszeichen zu finden, entfernen Sie die |. "ODER" ist in einer Zeichenklasse enthalten, so dass Sie nur ['"] benötigen (die | würde einfach ein Literal | entsprechen).

+0

Ich habe ein ähnliches Problem und Ihre Antwort hat mir geholfen. Aber ein anderes Problem tauchte auf - meine Regex bleibt gierig. Wo kann ich mehr über das "(? S) am Anfang" Zeug lesen? Kann ich meine Regex damit nicht gierig machen? Vielen Dank! – Hnatt

+4

Egal, ich habe es gefunden. '(. *)' - gierig, '(. *?)' - nicht gierig. – Hnatt

+0

(? S) half bei der Suche nach Übereinstimmungen, wo. (Punkt) neue Zeile enthalten, vielen Dank! – user219628