Я пытаюсь извлечь конкретное строковое значение из строки в формате JSON в Scala. Однако это будет использоваться в производственной среде, поэтому меня беспокоит эффективность. В настоящее время я сейчас использую бит кода ниже:Извлечь только первое совпадение с Regex в Scala
val r = """identifier=\{S: ([\w\.]+),""".r
var identifier: String = "";
r.findAllIn(queryResult toString).matchData foreach {
m => identifier = m.group(1)
}
Моя забота об эффективности. Мне не нужно проверять сам JSON (который создается AWS, поэтому я предполагаю, что это хорошо, и даже если это не так, я не могу его изменить), поэтому нет веских оснований для того, чтобы пройти все накладные расходы разобрать его.
Сказанное: могу ли я сделать это более эффективно с помощью регулярного выражения, или мне нужно будет спуститься до уровня обнаружения первого появления «идентификатора = {S:», затем следующего появления «,» после что, и получить подстроку между ними? Я пытался что-то сделать с r.findFirstIn
, но я не могу понять, как извлечь из этого группу.
Или есть какая-то другая сверхэффективная вещь, о которой я не знаю, что я мог делать?
Так как это в производственной среде, используйте парсер JSON, пожалуйста. – nhahtdh
Лучше использовать хорошо зарекомендовавший себя парсер, чем попытаться разобрать его самостоятельно с помощью регулярного выражения. Преждевременная оптимизация <Заполненность –
Насколько велика ваша строка json? Также 'identifier = somestring' выглядит как строковое значение внутри json. Было бы намного яснее, если вы можете поделиться образцом json, с которым имеете дело. – tuxdna