val zawartosc = (xml \\ "description")
val pattern = """.*(dolar australijski.*)""".r
val allMatches = (for (a <- zawartosc; text = a.text) yield {text}) collect {
case pattern(value) => value }
val result = allMatches.headOption // or .head
Это в основном вопрос использования правильного регулярного выражения.В этом случае вы хотите сопоставить строку, которая содержит dolar australijski
.Он должен допускать дополнительные символы до dolar
.Так что используйте .*
.Затем используйте скобки, чтобы отметить начало и конец того, что вам нужно.Обратитесь к Java API для полной документации .
Что касается понимания for
, я преобразовываю элемент XML в текст перед выполнением сопоставления, а затем собираю те, которые соответствуют шаблону, используя метод collect
.Тогда желаемый результат должен быть первым и единственным элементом.