2010-08-03 14 views
12

Sto cercando di cercare tutti i tag di input HTML con un tipo di "testo" all'interno di Netbeans 6.9.Ricerca di espressioni regolari multilinea Netbeans

NetBeans supporta la ricerca di stringhe utilizzando espressioni regolari con criteri di ricerca diversi distribuiti su più righe o funziona solo all'interno di una singola riga?

Questa espressione regolare

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

opere quando l'intero tag e gli attributi sono scritti in una sola riga come questa

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

Ma perché ho evitare di scrivere lunghe linee di codice e li rompono come come

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

la stessa espressione regolare non funziona.

C'è un modo per raggiungere questo obiettivo?

risposta

20

Per impostazione predefinita, il metacarattere . non corrisponde alle nuove righe. Ci dovrebbe essere un'opzione chiamata "Linea singola" o "DOTALL" o simile, che consente al punto di corrispondere a ogni carattere. Oppure puoi aggiungere (?s) all'inizio della regex e ottenere lo stesso effetto solo per quell'espressione regolare.

Ma sarebbe meglio sostituire lo .* con [^<>]*. Nella modalità DOTALL, .* proverà a divorare tutto il resto del documento, con conseguenti prestazioni lente e/o corrispondenze errate, ma [^<>]* non tenterà mai di trovare una corrispondenza oltre la fine del tag.

A proposito, se si sta utilizzando ['|"] per indicare un singolo-citazione o di una doppia citazione, sbarazzarsi della |. "OR" è implicito in una classe di caratteri, quindi hai solo bisogno di ['"] (lo | corrisponderebbe semplicemente a un valore letterale |).

+0

Ho un problema simile e la tua risposta mi ha aiutato. Ma un altro problema è apparso - la mia regex rimane avida. Dove posso leggere di più su questa roba "(? S) all'inizio"? Posso rendere il mio regex non avido con quello? Grazie! – Hnatt

+4

Non importa, l'ho trovato. '(. *)' - goloso, '(. *?)' - non avido. – Hnatt

+0

(? S) ha aiutato a trovare le partite dove. (Dot) inclusa nuova linea, grazie mille! – user219628

Problemi correlati