Ich versuche, einen regulären Ausdruck zu Lehrbuchdefinitionen zu entsprechen, die ich von einer Website bekomme. Die Definition enthält immer das Wort mit einer neuen Zeile gefolgt von der Definition. Zum Beispiel:Java Regex enthält neue Zeile in Übereinstimmung
Zither
Definition: An instrument of music used in Austria and Germany It has from thirty to forty wires strung across a shallow sounding board which lies horizontally on a table before the performer who uses both hands in playing on it Not to be confounded with the old lute shaped cittern or cithern
In meinen Versuchen, nur das Wort (in diesem Fall "Zither") zu bekommen, bekomme ich immer das Newline-Zeichen.
Ich habe sowohl ^(\w+)\s
und ^(\S+)\s
ohne viel Glück versucht. Ich dachte, dass vielleicht ^(\S+)$
funktionieren würde, aber das scheint das Wort überhaupt nicht zu entsprechen. Ich habe mit Rubel getestet, http://rubular.com/r/LPEHCnS0ri; Das scheint alle meine Versuche so zu erfüllen, wie ich es möchte, obwohl Java das nicht tut.
Hier ist mein Snippet
String str = ...; //Here the string is assigned a word and definition taken from the internet like given in the example above.
Pattern rgx = Pattern.compile("^(\\S+)$");
Matcher mtch = rgx.matcher(str);
if (mtch.find()) {
String result = mtch.group();
terms.add(new SearchTerm(result, System.nanoTime()));
}
Diese leicht durch triming den resultierenden String gelöst wird, aber das scheint, wie es unnötig sein sollte, wenn ich bereits einen regulären Ausdruck.
Alle Hilfe wird sehr geschätzt. Danke im Voraus!
'\ s' passt' \ n' unter anderem. –