2017-01-25 4 views
0

Ich habe viele Antworten gesehen, die Verwendung (? S) vor reg-Ausdruck, aber es wird mehr als ich erwartet übereinstimmen. Ich benutze die Suche in Eclipse Neon.Wie Regex verwenden, um mehrere Zeilen mit widerwillig

Ex:

Line 1: String[] str1 = new String[] {"a", "b", 
Line 2:  "c", "d"}; 
Line 3: String[] str2 = new String[] {"aa", "bb", 
Line 4:  "cc", "dd"}; 

Regex (?s)(\w+)\[\] (\w+) = new .+ (\{.*\}); wird 4 Zeile 1 bis Zeile übereinstimmen, stoppt im letzten }; passend, während ich das Spiel Anschlag in der ersten }; so line1 \ 2 und line3 machen wollen \ 4 kann separat abgestimmt werden.

+0

Wo ist Ihr Code? –

+0

Es ist der Code mit Label Line1 zu Line4. Format aktualisiert – Lee

+0

Ich entfernte die IDE-Tags und Erwähnungen. Wenn es sich um ein IDE-spezifisches Problem handelt, erläutern Sie bitte, wie es ist. – weston

Antwort

1

einfach ein ? nach .* behebt das Problem setzen:

(?s)(\w+)\[\] (\w+) = new [^{]+ (\{.*?\}); 

Das paßt so wenige Zeichen zwischen den {} wie möglich.

+0

Ich habe Ihre Regex kopiert, macht aber keinen Unterschied, stimmt immer noch mit allen 4 Zeilen überein. – Lee

+0

@Lee Wirklich? Schaut euch das hier an http://regexr.com/3f5ae. Es funktioniert mit ein paar Modifikationen, um mit Javascript zu arbeiten, aber es sollte immer noch dasselbe in Java funktionieren. Vielleicht stimmt etwas anderes nicht. –

+0

@Lee eigentlich leid, mein Schlechter Ich habe die Regex falsch kopiert:/Ich habe die Frage mit der neuen Regex aktualisiert. –

Verwandte Themen