2017-02-25 4 views
0

Ich mag jede Zeichenfolge zu nehmen, die auf eine neue Zeile mit Regular Expression befindet sichRegulaererAusdruck erhält Strings zwischen neuen Linien

string someStr = "first 
second 
third 
" 

Beispiel:

string str1 = "first"; 
string str2 = "second"; 
string str3 = "third"; 
+0

Siehe Regex-Tag Beschreibung, gibt es ein Geschmack/Kontext fehlt. – LotPings

+0

Dank für alle, aber ich meine: 'String someStr = "erste zweiten dritten "' Pseudo-Code 'str1 = someStr.RegExpr() // str1 enthält nur die erste line' –

Antwort

2

spalteten Sie es einfach mit „\ n“;

someStr.split("\n") 

Und Sie können die leeren Saiten auswählen, wenn Sie

möchten oder wenn Sie wirklich regex wollen, tun /^.*$/ mit mehrzeiligen Flagge

List<String> listOfLines = new ArrayList<String>(); 
Pattern pattern = Pattern.compile("^.*$", Pattern.MULTILINE); 
Matcher matcher = pattern.matcher("first\nsecond\nthird\n"); 
while (matcher.find()) { 
    listOfLines.add(matcher.group()); 
} 

Dann Sie haben;

listOfLines.get(0) = first 
listOfLines.get(1) = second 
listOfLines.get(2) = third 
+0

@Howto haben Sie versucht, Dies? –

+0

erste zweite dritte dieser Daten ist nur zum Beispiel nicht überall überall –

+0

@Howto können Sie ein Beispiel geben, das es bricht? –

1

Sie können verwenden Sie die folgende regex:

(\w+)(?=\n|"|$) 

siehe demo

+0

https://regex101.com/r/bDMivZ/2 –

+0

https://regex101.com/r/bDMivZ/4 –

+0

@bureaquete noch etwas? : P – m87

2

Oder wenn Sie wollen einfach nur das erste Wort jeder Zeile;

^(\w+).*$ mit mehrzeiliger Flagge. Regex101 hat eine schöne Regex-Test-Tool: https://regex101.com/r/JF3cKR/1

Verwandte Themen