И Дима, и jwvh помогли мне найти то, что мне нужно, особенно функции, предоставляемые классом Match
.Для полноты и для будущих читателей, вот решения, которые я использовал для получения индекса результата из данного индекса , то есть функции, которая наблюдает следующее поведение:
findIndexFromPosition(body, """\slong string""", 0) // Some(36)
findIndexFromPosition(body, """\slong string""", 37) // None
Во-первых, используя Pattern
и Matcher
классы Java, согласно этому ответу :
def findIndexFromPosition(body: String, pattern: String, fromIndex: Int): Option[Int] = {
val regex = Pattern.compile("\\slong string\\s").matcher(body)
regex.find(fromIndex) match {
case true => Some(regex.end)
case false => None
}
}
И, с помощью ответа jwvh, более скаламатический способ:
"""\slong string""".r.findAllMatchIn(body).map(_.start).find(_ > fromIndex)