Próbuję dopasować wyrażenie regularne do definicji podręczników, które otrzymuję ze strony internetowej. Definicja zawsze zawiera słowo z nową linią, po której następuje definicja. Na przykład:Java Regex wprowadza nową linię w dopasowaniu
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
W moich próbach uzyskania samego słowa (w tym przypadku "Cytra") wciąż otrzymuję znak nowej linii.
Próbowałem zarówno ^(\w+)\s
i ^(\S+)\s
bez powodzenia. Pomyślałem, że może ^(\S+)$
zadziała, ale wydaje się, że w ogóle nie pasuje do słowa. Testowałem z rubularnym, http://rubular.com/r/LPEHCnS0ri; który wydaje się skutecznie dopasowywać wszystkie moje próby w taki sposób, w jaki chcę, pomimo tego, że Java tego nie robi.
Oto mój urywek
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()));
}
to łatwo rozwiązać poprzez triming wynikowy ciąg, ale wydaje się, że powinna być niepotrzebny jeśli mam już za pomocą wyrażenia regularnego.
Cała pomoc jest bardzo doceniana. Z góry dziękuję!
'\ s' dopasowuje' \ n' między innymi. –